Mysql запросы из bash-файла

Mysql запросы из bash-файла

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

Связанный контент