我想运行多个 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
更好的做法是在 mysql/etc/mysql/my.cnf
文件中配置密码,这样就不需要每次都输入:
[client]
password = your_password
在后一种情况下,从之前的脚本中删除所有与密码相关的内容
答案2
通常有几种不同的方法可以实现这一目标。
将其存储在仅包含密码的外部文件中:
$cat password.txt
Password
$cat queries.sh
mysql -u <user> -p$(cat password.txt) <rest of the command>
将其存储在另一个 shell 脚本中:
$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>