我的bash脚本查询mysql
数据库3次,并将每个查询的标准重定向到一个文件(总共3个不同的文件,具有不同的列结构)。
我希望它要求mysql
密码,因为对我来说,不要在脚本或磁盘上输入密码非常重要。
如何在同一个mysql
会话中包含所有查询和stdout重定向,以避免要求密码3次?
这就是我现在所拥有的:
#!/bin/bash
mysql -h database.com -u user -p -e "USE database; mysql query1" > file1
mysql -h database.com -u user -p -e "USE database; mysql query2" > file2
mysql -h database.com -u user -p -e "USE database; mysql query3" > file3
答案 0 :(得分:0)
您可以使用tee
和notee
命令并编写单个查询文件,例如queries.sql
并一次性调用它:
use database
tee file1
query1
notee
tee file2
query2
notee
tee file3
query3
notee
然后调用它:
mysql -h database.com -u user -p -e "source queries.sql" > /dev/null
相关:
答案 1 :(得分:0)
您可以使用bash提示输入密码,然后将其提供给每个mysql命令:
#!/bin/bash
echo "enter the password for MySQL:"
read -s PASSWD
mysql -h database.com -u user -p$PASSWD -e "USE database; mysql query1" > file1
mysql -h database.com -u user -p$PASSWD -e "USE database; mysql query2" > file2
mysql -h database.com -u user -p$PASSWD -e "USE database; mysql query3" > file3
以下是针对非bash shell的静默提示的POSIX兼容版本:
stty -echo
printf "enter the password for MySQL:"
read PASSWD
stty echo
printf "\n"