Existe-t-il un moyen de transmettre le mot de passe de l'utilisateur DB dans l'outil de ligne de commande mysqladmin?


103

J'utilise actuellement ce qui suit mais il m'invite TOUJOURS à taper manuellement le mot de passe. Existe-t-il un moyen de le transmettre sur la ligne de commande lors du lancement de l'exécutable?

mysqladmin processlist -u root -p

4
Définissez MYSQL_PWD dans l'environnement ( export MYSQL_PWD=muhpassword) et exécutez votre commande sans l' extension -p. Voir Variables d'environnement du programme MySQL . Malgré les terribles avertissements du manuel , c'est plutôt sûr . À moins que vous ne lanciez des warez étranges dans le même shell qui pourrait aspirer votre environnement et l'envoyer à darkaspirator.cc.
David Tonhofer

Réponses:


190

Je viens de découvrir la réponse ...

mysqladmin processlist -u root -pYOURPASSWORDHERE

Pas d'espace entre votre mot de passe et le -p


14
les guillemets sont également autorisés si le mot de passe contient des espaces, comme dans:-p'YOURPASSWORD HERE'
Vigintas Labakojis

40
Wow ... vraiment intuitif ... Espace entre -h localhostet -u rootmais pas -pPASSWORD. Les programmeurs classiques rendent tout plus difficile que nécessaire.
Kolob Canyon

4
@KolobCanyon, vous pouvez omettre l'espace entre -u et root, -urootfonctionne bien
Peter Ajtai

11
Attention: cela est considéré comme peu sûr: dev.mysql.com/doc/mysql-security-excerpt/5.7/en/...
neverendingqs

3
@KolobCanyon: Et si votre mot de passe commence par un espace? ;) Le programmeur n'arrive pas à décider si l'espace sépare l'option et sa valeur ou est le premier caractère du mot de passe…
Stéphane

43

Essayer:

--password=PasswordTextHere 

Utile lorsque vous devez passer un mot de passe «vide» (à des fins de test bien sûr).
Ivo Pereira

cela semble également être la seule option pour passer un mot de passe vide dans la ligne de commande (sur une instance de sandbox par exemple)
penCsharpener

10

Cela devrait fonctionner: mysql -uroot -p'password'

Si vous essayez d'automatiser la solution mysql, vous pouvez utiliser le mot de passe de la variable:

mysql_pass=$(sudo grep -oP "temporary password is generated for root@localhost: \K(.*)" /var/log/mysqld.log)

mysql -uroot -p"$mysql_pass" < somescript.sql

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.