Mysql
 sql >> Database >  >> RDS >> Mysql

Come eseguire un comando MySQL da uno script di shell?

Devi usare il -p flag per inviare una password. Ed è complicato perché non devi avere spazio tra -p e la password.

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

Se usi uno spazio dopo -p fa in modo che il client mysql ti chieda in modo interattivo la password, quindi interpreta l'argomento del comando successivo come un nome-database:

$ 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'

In realtà, preferisco memorizzare l'utente e la password in ~/.my.cnf quindi non devo metterlo affatto sulla riga di comando:

[client]
user = root
password = XXXXXXXX

Quindi:

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

Re il tuo commento:

Eseguo sempre comandi mysql in modalità batch come quelli sopra sulla riga di comando e negli script della shell. È difficile diagnosticare cosa c'è che non va nello script della shell, perché non hai condiviso lo script esatto o alcun output di errore. Ti suggerisco di modificare la tua domanda originale sopra e fornire esempi di cosa non va.

Inoltre, durante la risoluzione dei problemi di uno script di shell, utilizzo -x flag in modo da poter vedere come sta eseguendo ogni comando:

$ bash -x myscript.sh