Yedekleme MySQL Veritabanı PHP Script

5 Cevap php

Ben yedek bir MySQL veritabanı için bir PHP komut dosyası yazmak çalışıyorum:

   if ( $db_resource = mysql_connect($db_server, $db_username, $db_password, $db_newlink) )
   {
      if ( mysql_select_db( $db_name, $db_resource ) )
      {
         $backupFile = $db_name."_".date( "Y-m-d-H-i-s" ).".gz";
         $command = "mysqldump --opt -h ".$db_server." -u ".$db_username." -p ".$db_password." ".$db_name." | gzip > ".$db_save_dir."/".$backupFile;
         system( $command );
      }
   }

   mysql_close( $db_resource );

Ben shell terminal onu çalıştırdığınızda, bu olsun:

[stingray]$ php /[ABSOLUTE PATH]/db_backup.php

Şifrenizi girin: [I INPUT PASSWORD ]

mysqldump: Got error: 1044: Access denied for user '[USERNAME]'@'208.113.128.0/255.255.128.0' to database '[PASSWORD]' when selecting the database

Benim şifre olarak veritabanını çağırarak neden Tamam, şimdi ne ben gerçekten anlamıyorum değildir. Ben dosyaya benim web tarayıcı işaret ederse, o sadece iyi çalışır. Herkes yapıyor olması gerektiğini biliyor mu? Vb PHP, Python, CGI, eğer kişisel olarak, ben gerçekten sadece çok uzun bir Apache sunucu üzerinde çalıştırmak gibi, umurumda değil.

Teşekkürler.

5 Cevap

Şifre bayrağı için sözdizimi farklıdır. -P bayrağı sonra boşluk çıkarın ve başka bir atış vermek.

Tam seçenek isimlerini kullanmaya çalışın; i benzer bir sorunu ama başarısızlığın gerçek kök çözmek için hiçbir zaman vardı; ancak bu çalıştı ve benim için çalışıyor:

/usr/bin/mysqldump \
--user=username \
--password=password \
dbname > mysqldump.sql

1: no space between -p and PASSWORD ex: -p".$db_password."

2: (isterseniz) bu veritabanı için belirli bir kullanıcı için ayrıcalıkları Tüm vermek.

3: dosyayı komutu çalıştırmak için doğru izni verir.

Sadece şeyleri yedekleme ediyorsanız kuvvetle this very easy, very configurable, open source cron backup script kullanarak öneriyoruz. Bu muhteşem ve ben size sonra konum hepsi eğer seveceksin düşünüyorum.

Gerçekten apache üzerinden çalıştırmak için gerekli eğer uzaktan komut tetiklemek için backticks kullanabilirsiniz ve sonra yedekleme dönmeler ve haftalık / aylık yedekleme, ücretsiz sıkıştırma ve günlüğü olsun.

Sana SqlBuddy, senin gibi benim sorunum çözüldü kullanmanızı öneririm.

Eğer cron veya otomatik bir komut dosyası kullanmak istiyorsanız yalnızca özel bir komut ile devam edin.