Musíte použít -p
příznak pro odeslání hesla. A je to složité, protože mezi -p
nesmíte mít mezeru a heslo.
$ mysql -h "server-name" -u "root" "-pXXXXXXXX" "database-name" < "filename.sql"
Pokud za -p
použijete mezeru způsobí to, že vás klient mysql interaktivně vyzve k zadání hesla a poté interpretuje další argument příkazu jako název databáze:
$ 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'
Ve skutečnosti dávám přednost uložení uživatele a hesla do ~/.my.cnf, takže je nemusím vůbec zadávat na příkazový řádek:
[client]
user = root
password = XXXXXXXX
Potom:
$ mysql -h "server-name" "database-name" < "filename.sql"
K vašemu komentáři:
Po celou dobu spouštím příkazy mysql v dávkovém režimu, jako jsou výše uvedené, na příkazovém řádku a ve skriptech shellu. Je těžké diagnostikovat, co je s vaším shell skriptem špatně, protože jste nesdíleli přesný skript ani žádný chybový výstup. Navrhuji, abyste upravili svou původní otázku výše a uvedli příklady toho, co se pokazilo.
Také když řeším problémy se skriptem shellu, používám -x
flag, abych viděl, jak provádí jednotlivé příkazy:
$ bash -x myscript.sh