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

¿Cómo ejecutar un comando MySQL desde un script de shell?

Necesitas usar el -p bandera para enviar una contraseña. Y es complicado porque no debe haber espacio entre -p y la contraseña.

$ mysql -h "server-name" -u "root" "-pXXXXXXXX" "database-name" < "filename.sql"

Si usa un espacio después de -p hace que el cliente mysql le solicite la contraseña de forma interactiva y luego interpreta el siguiente argumento del comando como un nombre de base de datos:

$ mysql -h "server-name" -u "root" -p "XXXXXXXX" "database-name" < "filename.sql"
Enter password: <you type it in here>
ERROR 1049 (42000): Unknown database 'XXXXXXXX'

En realidad, prefiero almacenar el usuario y la contraseña en ~/.my.cnf para no tener que ponerlo en la línea de comandos:

[client]
user = root
password = XXXXXXXX

Entonces:

$ mysql -h "server-name" "database-name" < "filename.sql"

Re tu comentario:

Ejecuto comandos mysql en modo por lotes como el anterior en la línea de comandos y en scripts de shell todo el tiempo. Es difícil diagnosticar qué está mal con su secuencia de comandos de shell, porque no ha compartido la secuencia de comandos exacta ni ningún resultado de error. Le sugiero que edite su pregunta original anterior y proporcione ejemplos de lo que sale mal.

Además, cuando estoy solucionando problemas con un script de shell, uso -x bandera para que pueda ver cómo está ejecutando cada comando:

$ bash -x myscript.sh