いくつかの低レベルのMySQLコマンドを使用してシェルスクリプトを実行すると、私のログファイルは次のメッセージでダンプされます。
メッセージは次のとおりです。
「警告:コマンドラインインターフェイスでパスワードを使用するのは安全ではないかもしれません。」
これらのメッセージを停止するには、次のジョブ定義を使用します。
例:
run_wrapper.sh |grep -v "Warning: Using a password" > output.log 2>&1
これは機能しますが、MySQLエラーは記録されませんoutput.log
。
以下のように定義を変更すると、MySQLエラーが表示され始めます。
run_wrapper.sh > output.log 2>&1
その場合、問題は警告メッセージを抑制し、cron定義のみを使用してログファイルのSQLエラーを報告する方法です。
答え1
Bashスクリプトの上部で編集してください。
export MYSQL_PWD=yourdbpassword
そしてmysqlクエリは次のようになります。mysql -u username -h host db -e "statement"
引用:の回答スタックオーバーフロー。他の答えも従うことができます。
答え2
ラッパーで、次のような行を検索します。
mysql -u<username> -p<some_password> -hlocalhost -D<database_name>
そしてに変更
export MYSQL_PWD=<some_password> ; mysql -u<username> -hlocalhost -D<database_name>
これは警告の原因を解決します。
答え3
逃したようです。標準エラーrun_wrapper.sh
エラーが発生せず、grep
ログファイルに到達しないようにそれ自体からリダイレクトします。
どちらも満足しているなら標準出力そして特別なエラーログファイルへの書き込み
run_wrapper.sh 2>&1 | grep -v "Warning: Using a password" > output.log
または、ログファイルにエラーを記録する場合標準出力書き込み呼び出し端末を終了するには、次のようにします。
( run_wrapper.sh 2>&1 1>&3 | grep -v "Warning: Using a password" > output.log ) 3>&1
答え4
コマンドの最後に以下を追加してみてください。
/dev/null 2>&1