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