Question

Je suis en train d'écrire un script PHP pour sauvegarder une base de données 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 );

Lorsque je le lance à partir du terminal shell, je reçois ceci:

  

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

     

Mot de passe: [ I SAISIE MOT DE PASSE ]

     

mysqldump: Got erreur: 1044: Accès   refusé pour l'utilisateur   [ USERNAME ] '@ '208.113.128.0/255.255.128.0'   la base de données [ MOT DE PASSE ] 'quand   la sélection de la base de données

Bon, maintenant ce que je ne comprends vraiment pas pourquoi il appelle la base de données que mon mot de passe. Si je pointe mon navigateur Web au fichier, il fonctionne très bien. Est-ce que quelqu'un sait ce que je devrais faire? Personnellement, je ne me soucie pas si elle est PHP, Python, CGI, etc., tout aussi longtemps qu'il peut fonctionner sur un serveur Apache.

Merci.

Était-ce utile?

La solution

La syntaxe pour le drapeau de mot de passe est différent. Retirer l'espace après le drapeau -p et lui donner une autre chance.

Autres conseils

essayez d'utiliser les noms d'options complètes; J'ai eu un problème similaire, mais pas le temps de s'attaquer à la racine réelle de l'échec; mais cela a fonctionné et fonctionne pour moi:

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

1: pas d'espace entre -p et MOT DE PASSE ex: -p ". $ db_password"

2:. Tous accorder (si vous voulez) des privilèges pour un utilisateur spécifique pour cette base de données

3: donner le fichier l'autorisation correcte pour exécuter la commande.

Si vous recommandons simplement sauvegarder les choses que je voudrais fortement d'utiliser cette source très facile, très configurable, ouvert script de sauvegarde cron. Il est superbe et je pense que ça vous plaira si c'est tout ce que vous êtes après.

S'il est vraiment nécessaire pour être exécuté par apache, vous pouvez utiliser pour déclencher à distance des contre-apostrophes le script et vous obtenez des rotations de sauvegarde et les sauvegardes hebdomadaires / mensuels, la compression et l'exploitation forestière libre.

Je vous suggère d'utiliser SQL Buddy, il a résolu mon problème comme vous.

Procéder à un script personnalisé que si vous souhaitez utiliser cron ou un script automatisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top