Трябва да използвате -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