Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да изпълним MySQL команда от шел скрипт?

Трябва да използвате -p флаг за изпращане на парола. И това е трудно, защото не трябва да имате интервал между -p и паролата.

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

Ако използвате интервал след -p той кара mysql клиента да ви подкани интерактивно за паролата и след това интерпретира следващия аргумент на командата като име на база данни:

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

Всъщност предпочитам да съхранявам потребителя и паролата в ~/.my.cnf, така че изобщо да не се налага да ги поставям в командния ред:

[client]
user = root
password = XXXXXXXX

След това:

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

Относно вашия коментар:

Изпълнявам mysql команди в пакетен режим като горните в командния ред и в shell скриптове през цялото време. Трудно е да се диагностицира какво не е наред с вашия шел скрипт, защото не сте споделили точния скрипт или какъвто и да е изход за грешка. Предлагам ви да редактирате оригиналния си въпрос по-горе и да предоставите примери за това какво се обърка.

Също така, когато отстранявам неизправности в шел скрипт, използвам -x флаг, за да мога да видя как изпълнява всяка команда:

$ bash -x myscript.sh


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL инжекции в ADOdb и обща сигурност на уебсайта

  2. Мигрирайте от традиционна репликация към GTID

  3. Формат на датата на MySQL – това, което трябва да знаете

  4. MySQL utf8mb4, Грешки при запазване на Emojis

  5. Максимална дължина за текст от типа MySQL