Я хотел бы запустить несколько запросов 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 в скриптах оболочки?