在同一个mysql会话中具有多个查询和重定向的Bash脚本

时间:2018-05-21 08:38:30

标签: mysql bash

我的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

2 个答案:

答案 0 :(得分:0)

您可以使用teenotee命令并编写单个查询文件,例如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"