1. ホーム
  2. mysql

[解決済み] ターミナルからmysqlを使用して、bashスクリプトで書かれたパスワードを警告メッセージとして表示しないようにする。

2022-03-17 22:16:24

質問

ターミナルからMySQLに対して以下のコマンドを実行しようとしたところ、エラーが発生しました。

mysql -u $user -p$password -e "statement"

実行は期待通りに動作しますが、必ず警告が出ます。

<ブロッククオート

警告 コマンドラインインターフェイスでのパスワードの使用は安全でない場合があります。

しかし、私は上の文を環境変数を使って実施しなければならない( $password というのも、ターミナルからbashスクリプトで繰り返しコマンドを実行したいのですが、プロンプトが表示されるのを待って、1つのスクリプトで50回も100回もパスワードを入力させられるのは絶対に嫌だからです。そこで質問です。

  • 警告を抑制することは可能でしょうか?コマンドは記載したように正常に動作しますが、ループオーバーして50回、100回とコマンドを実行するとウィンドウがかなり乱れます。

  • 警告メッセージに従い、スクリプトにパスワードを書かない方がいいのでしょうか?その場合、プロンプトが強制的にパスワードを入力させるたびに、パスワードを入力しなければならないのでしょうか?

実行中 man mysql と言うだけで、何の役にも立ちません。

--show-warnings
各ステートメントの後に警告を表示します(警告がある場合)。このオプションは、インタラクティブモードとバッチモードに適用されます。

で、この機能をオフにする方法については何も触れていません。

OS X 10.9.1 Mavericksで、homebrewのMySQL 5.6を使用しています。

解決方法は?

MySQLクライアント/サーバーのバージョンが5.6.xの場合、WARNINGメッセージを回避する方法として、以下の方法があります。 mysql_config_editor ツールを使用します。

mysql_config_editor set --login-path=local --host=localhost --user=username --password

そして、シェルスクリプトで使用することができます。

mysql --login-path=local  -e "statement"

の代わりに

mysql -u username -p pass -e "statement"