複数の MySQL クエリを実行し、指定したファイルに保存したいと思います。クエリは bash スクリプトに保存されます。queries.sh
例:
cat queries.sh
mysql -u <user> -p <DBname> -e "select Col1 from Table1 where Condition;" > /home/<user>/queries/Col1Table1Cond
mysql -u <user> -p <DBname> -e "select Col5 from Table2 where Condition;" > /home/<user>/queries/Col5Table2Cond
スクリプトを実行するだけでは不十分です。<user>
クエリごとにパスワードを入力する必要があり、スクリプトのフローが損なわれます。
答え1
これを試して ;)
user="jonnDoe"
dbname="customers"
password="VerySecret"
mysql -u $user -D $dbname -p $password -e "select Col1 from Table1 where Condition;" > /home/$user/queries/Col1Table1Cond
mysql -u $user -D $dbname -p $password -e "select Col5 from Table2 where Condition;" > /home/$user/queries/Col5Table2Cond
より良い方法は、/etc/mysql/my.cnf
パスワードを内部に含む mysql ファイルを構成することです。この方法であれば、毎回パスワードを入力する必要はありません。
[client]
password = your_password
後者の場合、前のスクリプトからパスワードに関連するものをすべて削除します
答え2
これを実現するには通常、いくつかの異なる方法があります。
パスワードのみを含む外部ファイルに保存します。
$cat password.txt
Password
$cat queries.sh
mysql -u <user> -p$(cat password.txt) <rest of the command>
別のシェル スクリプトに保存します。
$cat settings.sh
PASSWORD=Password
$cat queries.sh
source settings.sh
mysql -u <user> -p"$PASSWORD" <rest of the command>
PASSWORD という環境変数に保存します。
$cat queries.sh
mysql -u <user> -p"$PASSWORD" <rest of the command>
また、以下も参照してくださいシェル スクリプトで MySQL に自動ログインするにはどうすればよいでしょうか?