Domanda

Sto cercando di scrivere uno script PHP per il backup di un database MySQL:

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

Quando lancio da terminale shell, ottengo questo:

  

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

     

Inserire la password: [ I INPUT PASSWORD ]

     

mysqldump: Errore Got: 1044: Accesso   negato per l'utente   '[ USERNAME ]' @ '208.113.128.0/255.255.128.0'   al database '[ PASSWORD ]' quando   Selezione del database

Ok, ora quello che io davvero non capisco è il motivo per cui sta chiamando il database come la mia password. Se io punto il mio browser web il file, funziona bene. Qualcuno sa che cosa dovrei fare? Personalmente, io davvero non mi importa se si tratta di PHP, Python, CGI, ecc, basta che può funzionare su un server Apache.

Grazie.

È stato utile?

Soluzione

La sintassi per la bandiera password è diversa. Rimuovere lo spazio dopo l'opzione -p e dare un altro colpo.

Altri suggerimenti

provare utilizzare i nomi full option; Ho avuto un problema simile, ma non c'è tempo per affrontare la vera radice del fallimento; tuttavia questo ha funzionato e funziona per me:

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

1: nessuno spazio tra -p e PASSWORD es: -p ". $ password_db"

2:. Concedere a tutti (se si vuole) privilegi per un utente specifico per il database

3: dare il file corretto il permesso di eseguire il comando.

Se sei solo il backup le cose vi consiglio vivamente di utilizzare questo molto facile, molto configurabile, open source cron script di backup . E 'superbo e penso che vi piacerà se è tutto quello che stai cercando.

Se è veramente necessario per essere eseguito attraverso apache si potrebbe usare apici inversi per attivare a distanza la sceneggiatura e poi si arriva rotazioni di backup ei backup settimanali / mensili, compressione e registrazione gratuitamente.

Vi suggerisco di utilizzare SqlBuddy , ha risolto il mio problema come il vostro.

Procedere con uno script personalizzato solo se si desidera utilizzare cron o uno script automatico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top