我已经使用 Unix 控制台中的“mysql”命令一段时间了。它对于安排任务或无人值守启动任务更方便。
该脚本的概要如下:
#!/bin/bash
#DB Config
USR_BD=myUsr
PWD_BD=myPass
IP_BD=x.x.x.x
f_exec ()
{
echo `date` ' -> Executing sql file ' $1
mysql -h $IP_BD -u $USR_BD -p$PWD_BD my_schema < $1
echo `date` ' -> Executed sql file ' $1
}
f_exec my_sentences.sql
问题是,我已经通过了安全检查,他们告诉我不能将明文密码保存在变量中,也不能保存在 .sh 脚本中的纯文本文件中
我的问题是:我该如何解决这个问题?
- 如果你可以保存像令牌这样的东西,那么令牌就会出现与密码相同的问题。
- 如果您允许无需密码即可连接到我运行脚本的主机,并且如果您获得该主机的访问权限,那么您也可以获得数据库的访问权限。
当然,我显然不会在凌晨 3 点连接输入密码来运行脚本。或者在线等待长达 10 分钟的繁重查询。
我不知道该如何解决这个问题。谢谢。
现在脚本:
现在调用:
只有由您的脚本启动
root
才能mypass.txt
正确包含并使$MYSQLPASSWORD
变量可见。非特权用户将收到权限错误。