たとえば、mysqlと対話するcronスクリプトを作成したいと思います。
#!/bin/bash
mysql -uroot -p
echo root
echo "CREATE DATABASE example"
しかし、うまくいきません。プロンプトのみが表示されます。
Enter password:
mysqlを終了すると、次のように表示されます。
root
"CREATE DATABASE example"
どんなアイデアがありますか?
ベストアンサー1
次のように入力してください。
[client]
user=root
password="my-very-secret-password"
ファイル内の権限は、ファイルの読み取り権限を持つ人以外の人がファイルを読み取ることができないことを保証します。
そして、以下を実行してください:
#! /bin/sh -
mysql --defaults-extra-file=/path/to/that/file --batch << "EOF"
CREATE DATABASE example
EOF
バラよりMySQLセルフガイドより多くの情報を知りたいです。
スクリプトにパスワードを入力してスクリプト自体への読み取りアクセスを制限することはできますが、パスワードがどのコマンドの引数にも渡されないようにする必要があります。これにより、出力から誰にでもパスワードが表示されますps
。
次のことができます。
#! /bin/sh -
mysql --defaults-extra-file=/dev/fd/3 --batch 3<< "END_OF_AUTH" << "END_OF_SQL"
[client]
user=root
password="my-very-secret-password"
END_OF_AUTH
CREATE DATABASE example
END_OF_SQL