Frage

Ich versuche, einen PHP-Skript zum Sichern einer MySQL-Datenbank zu schreiben:

   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 );

Wenn ich es von der Shell-Terminal laufen, bekomme ich diese:

  

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

     

Passwort eingeben: [ I PASSWORT ]

     

mysqldump: Got error: 1044: Zugriff   für Benutzer verweigert   '[ NUTZERNAME ]' @ '208.113.128.0/255.255.128.0'   zur Datenbank '[ Kennwort ]', wenn   Auswählen der Datenbank

Okay, jetzt, was ich wirklich nicht verstehe, ist, warum es die Datenbank als mein Passwort aufrufen. Wenn ich meinen Web-Browser auf die Datei verweisen, es läuft ganz gut. Weiß jemand, was soll ich tun? Ich persönlich wirklich egal, wenn es PHP, Python, CGI usw., nur so lange, wie es auf einem Apache-Server ausgeführt werden kann.

Danke.

War es hilfreich?

Lösung

Die Syntax für den Passwort-Flag ist anders. Entfernen Sie das Leerzeichen nach dem -p Flagge und geben ihm einen weiteren Schuss.

Andere Tipps

versuchen, die vollen Optionsnamen verwenden; Ich hatte ein ähnliches Problem, aber keine Zeit, die eigentliche Wurzel des Fehlers zu bewältigen; aber das funktionierte und funktioniert für mich:

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

1: kein Leerzeichen zwischen -p und dem Kennwort ex: -p ". $ db_password"

. 2: erteilen Alle (wenn Sie möchten) Berechtigungen für einen bestimmten Benutzer für die Datenbank

3: geben Sie die Datei korrekt Erlaubnis, den Befehl auszuführen.

Wenn Sie nur die Dinge sichern würde ich empfehlen dieser sehr einfach, sehr konfigurierbar, Open-Source-Verwendung cron Backup-Skript . Es ist großartig und ich denke, es wird Ihnen gefallen, wenn das alles Sie nach.

Wenn es wirklich gebraucht wird durch Apache ausgeführt werden Sie Backticks verwenden könnten aus der Ferne das Skript auslösen und Sie dann Backup-Rotationen und wöchentliche / monatliche Backups erhalten, Kompression und kostenlos anmelden.

Ich schlage vor, Sie verwenden SqlBuddy , es löste mein Problem wie Ihr.

Gehen Sie mit einem benutzerdefinierten Skript nur, wenn Sie cron oder ein automatisiertes Skript verwendet werden sollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top