Вам необходимо использовать флаг -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 в пакетном режиме, подобные приведенным выше для командыстрока и в скриптах оболочки все время.Трудно диагностировать, что не так с вашим сценарием оболочки, потому что вы не указали точный сценарий или какие-либо сообщения об ошибках.Я предлагаю вам отредактировать исходный вопрос выше и привести примеры того, что идет не так.
Также, когда я устраняю неполадки в сценарии оболочки, я использую флаг -x
, чтобы видеть, как он выполняет каждую команду:
$ bash -x myscript.sh