sql >> Databáze >  >> RDS >> Mysql

Jak spustit příkaz MySQL ze skriptu shellu?

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


  1. Oracle :vyberte maximální hodnotu z různých sloupců stejného řádku

  2. Nejlepší datový typ pro ukládání hodnot měn v databázi MySQL

  3. Víte, kdy opakovat nebo selhat při volání SQL Server z C#?

  4. Povolit vzdálený přístup k databázi MySQL