首页 > 解决方案 > 在同一个 mysql 会话中具有多个查询和重定向的 Bash 脚本

问题描述

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

标签: mysqlbash

解决方案


您可以使用 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"

推荐阅读