Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Programmation et administration système
Programmation et administration système Vos questions sur les scripts d'administration système, création de compte utilisateur, socket, fork, ping, etc...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/06/2012, 14h06   #1
lavazavio
Rédacteur/Modérateur
 
Avatar de lavazavio
 
Homme
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 427
Points : 2 427
Par défaut Mysqldump et perl

Bonjour,

Je suis en train de me faire un script de backup en Perl.
Sa fonction sera notamment de faire des dump de bases de données MySQL sous Windows.

Mais voila, lorsque je lance la commande mysqldump depuis le script perl, le dump échoue et mysql revoit une erreur de connexion à la base, alors que la même commande exécutée depuis l'invite de commande fonctionne...

Voici le code dans le script :
Code perl :
system("\"C:\\Program\ Files\\MySQL\\MySQL\ Server 5.1\\bin\\mysqldump.exe\" --host=$DB_HOST --user=$DB_USER -password=$DB_PASS --single-transaction $DB_DBNAME > $DB_DEST\\$DB_DBNAME-$date.sql")

Comme vous le voyez, j'ai pourtant protégé au maximum les backslashs et les espaces !

Voici ce que me retourne l'exécution du script :
Code :
mysqldump: Got error: 1045: Access denied for user 'user1'@'localhost' (using password: YES) when trying to connect
Comment faire un mysqldump sous Windows en Perl ?

Merci pour vos lumières
__________________
Rédacteur et Modérateur rubrique Linux
Articles dvp.com
Man pages en français
lavazavio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2012, 15h19   #2
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 568
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 568
Points : 31 786
Points : 31 786
Peux-tu mettre ce code et nous retourner le résultat :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
my $programme_dump = 'C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqldump.exe';
my $commande       = '"' . $programme_dump . '" ' 
  . "--host=$DB_HOST "
  . "--user=$DB_USER "
  . "-password=$DB_PASS "
  . "--single-transaction $DB_DBNAME "
  . "$DB_DEST/$DB_DBNAME-$date.sql"
  ;
 
print "[$commande]\n";
 
system $commande;
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2012, 16h43   #3
lavazavio
Rédacteur/Modérateur
 
Avatar de lavazavio
 
Homme
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 427
Points : 2 427
Et voila :

Code perl :
1
2
["C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqldump.exe" --host=localhost --user=aq1 -password=aq1 --single-transaction aq1 > C:\Users\toto\Desktop/aq1-120612.sql]
mysqldump: Got error: 1045: Access denied for user 'aq1'@'localhost' (using password: YES) when trying to connect
__________________
Rédacteur et Modérateur rubrique Linux
Articles dvp.com
Man pages en français
lavazavio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2012, 17h13   #4
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 568
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 568
Points : 31 786
Points : 31 786
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
my ($DB_DEST, $DB_HOST, $DB_USER, $DB_PASS, $DB_DBNAME) = ('C:/temp', 'localhost', 'aq1', 'aq1', 'aq1');
my $programme_dump   = File::Spec->catfile('C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqldump.exe');
my $fichier_resultat = File::Spec->catfile($DB_DEST, "$DB_DBNAME.sql");
 
my $commande       = '"' . $programme_dump . '" ' 
  . "--host=\"$DB_HOST\" "
  . "--user=\"$DB_USER\" "
  . "--password=\"$DB_PASS\" "
  . "--single-transaction=\"$DB_DBNAME\" "
  . "> \"$fichier_resultat\"";
  ;
 
print "[$commande]\n";
system $commande;
si ça ne fonctionne pas, copie colle la commande que le programme te donne et lance le dans le DOS.
si toujours rien, essaye de de connecter via phpmyadmin ou en console pour voir si les paramètres que tu rentres sont exacts.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2012, 12h28   #5
lavazavio
Rédacteur/Modérateur
 
Avatar de lavazavio
 
Homme
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 427
Points : 2 427
Bonjour,

Désolé pour le temps que j'ai mis pour répondre.

Je viens de tester ton dernier bout de code et cela fonctionne !

Je vais donc l'utiliser. Mais je ne comprends toujours pas pourquoi les bouts de code précédents ne fonctionnaient pas. C'est un mystère...

Merci beaucoup pour ton aide en tout cas .
__________________
Rédacteur et Modérateur rubrique Linux
Articles dvp.com
Man pages en français
lavazavio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h20.


 
 
 
 
Partenaires

Hébergement Web