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
Ethan Allen
la source
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

Ethan Allen
la source
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 
ge0man
la source
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

3lvinaz
la source