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.