sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo iniciar sesión automáticamente en MySQL desde un script de shell?

Formas alternativas de escribir estas opciones.

Puedes escribir

mysql -u "$MYSQL_ROOT" -p"$MYSQL_PASS" -e "SHOW DATABASES"

para pasar cadenas vacías como argumentos separados. Sin embargo, su comentario a continuación indica que el cliente aún solicitará una contraseña. Probablemente interprete el argumento vacío como un nombre de base de datos y no como la contraseña. Así que podría intentar lo siguiente en su lugar:

mysql --user="$MYSQL_ROOT" --password="$MYSQL_PASS" -e "SHOW DATABASES"

archivo .my.cnf

Pero incluso si hay una manera, te sugiero que uses un ~/.my.cnf archivo en su lugar. Es probable que los argumentos en la línea de comandos se incluyan en una lista de procesos generada por ps -A -ocmd , para que otros usuarios puedan verlos. El .my.cnf archivo, por otro lado, puede (y debe) ser legible solo por usted (usando chmod 0600 ~/.my.cnf ) y se usará automáticamente. Haga que ese archivo incluya las siguientes líneas:

[client]
user=root
password=

Luego un simple mysql -e "SHOW DATABASES" será suficiente, ya que el cliente obtendrá sus credenciales de ese archivo.

Consulte 6.1.2.1. Directrices para usuarios finales sobre seguridad de contraseñas para conocer las diversas formas en que puede proporcionar una contraseña y sus respectivos beneficios e inconvenientes. Consulte 4.2.3.3. Uso de archivos de opciones para obtener información general sobre este .my.cnf archivo