2

我的 bash 脚本查询mysql数据库 3 次,并将每个查询的标准重定向到一个文件(总共 3 个不同的文件,具有不同的列结构)。

我希望它询问mysql密码,因为对我来说不要在脚本或磁盘上输入密码很重要。

如何在同一个mysql会话中包含所有查询和标准输出重定向以避免要求输入密码 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
4

2 回答 2

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"
于 2018-05-25T19:16:22.070 回答
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

有关的:

于 2018-05-25T18:51:30.707 回答