-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