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

Hvordan udfører man en MySQL-kommando fra et shell-script?

Du skal bruge -p flag for at sende en adgangskode. Og det er vanskeligt, fordi du ikke må have mellemrum mellem -p og adgangskoden.

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

Hvis du bruger et mellemrum efter -p det får mysql-klienten til at bede dig interaktivt om adgangskoden, og derefter fortolker den næste kommandoargument som et databasenavn:

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

Faktisk foretrækker jeg at gemme brugeren og adgangskoden i ~/.my.cnf, så jeg slet ikke behøver at sætte den på kommandolinjen:

[client]
user = root
password = XXXXXXXX

Så:

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

Om din kommentar:

Jeg kører batch-mode mysql-kommandoer som ovenstående på kommandolinjen og i shell-scripts hele tiden. Det er svært at diagnosticere, hvad der er galt med dit shell-script, fordi du ikke har delt det nøjagtige script eller noget fejloutput. Jeg foreslår, at du redigerer dit oprindelige spørgsmål ovenfor og giver eksempler på, hvad der går galt.

Også når jeg fejlfinder et shell-script, bruger jeg -x flag, så jeg kan se, hvordan den udfører hver kommando:

$ bash -x myscript.sh


  1. Bedste type indeksering, når der er LIKE-klausul

  2. SCD Type 4

  3. Hvordan kan jeg optimere MySQL's ORDER BY RAND() funktion?

  4. Sådan fungerer LOCATE()-funktionen i MySQL