¿Hay alguna forma de pasar la contraseña de usuario de la base de datos a la herramienta de línea de comandos mysqladmin?

102

Actualmente utilizo lo siguiente, pero SIEMPRE me pide que escriba manualmente la contraseña. ¿Hay alguna forma de pasarlo en la línea de comandos al iniciar el ejecutable?

mysqladmin processlist -u root -p
Ethan Allen
fuente
3
Configure MYSQL_PWD en el entorno ( export MYSQL_PWD=muhpassword) y ejecute su comando sin el -p. Consulte Variables de entorno del programa MySQL . A pesar de las terribles advertencias del manual , esto es bastante seguro . A menos que inicie warez extraño en el mismo shell que podría aspirar su entorno y enviarlo a darkaspirator.cc.
David Tonhofer

Respuestas:

190

Acabo de descubrir la respuesta ...

mysqladmin processlist -u root -pYOURPASSWORDHERE

No hay espacio entre su contraseña y la -p

Ethan Allen
fuente
14
las comillas también se permiten si la contraseña contiene espacios, como en:-p'YOURPASSWORD HERE'
Vigintas Labakojis
40
Wow ... realmente intuitivo ... Espacio entre -h localhosty -u rootpero no -pPASSWORD. Los programadores clásicos hacen que todo sea más difícil de lo necesario.
Kolob Canyon
4
@KolobCanyon puede omitir el espacio entre -u y raíz, -urootfunciona bien
Peter Ajtai
11
Advertencia: esto se considera inseguro: dev.mysql.com/doc/mysql-security-excerpt/5.7/en/…
neverendingqs
3
@KolobCanyon: ¿Qué pasa si su contraseña comienza con un espacio? ;) El programador no puede decidir si el espacio separa la opción y su valor o es el primer carácter de la contraseña…
Stéphane
43

Tratar:

--password=PasswordTextHere 
ge0man
fuente
Útil cuando necesita pasar una contraseña "en blanco" (para propósitos de prueba, por supuesto).
Ivo Pereira
Esta también parece ser la única opción para pasar una contraseña vacía en la línea de comando (en una instancia de sandbox, por ejemplo)
penCsharpener
10

Esto debería funcionar: mysql -uroot -p'password'

Si está tratando de automatizar la solución mysql, puede usar la contraseña 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
fuente