使用脚本进行MySQL身份验证,不提供纯文本密码

时间:2014-04-22 10:01:52

标签: mysql bash security authentication cgi

我使用CGI编写了bash脚本,执行MySQL查询。由于我的目的是自动执行任务,因此我必须在脚本中放置MySQL credentials,密码为纯文本。对我来说问题是有问题的服务器将执行脚本是具有外部访问权限的生产服务器。我正在寻找一种解决方案,其中自动化仍然存在,但没有以纯文本形式提供密码。

PS:对我来说,一个解决方案是通过删除其他人的所有权限来强制执行严格权限,将rwx用于root并将所有权更改为root的组。但由于这是一个CGI脚本,我无法删除其他人的读取和执行权限。

代码如下

#!/bin/bash

echo "Content-type: text/html"
echo ""

echo "<html>"
echo "<body>"

mysql -h $host -u root -ptest -e "select User,marks,percent from $db;" | sed  's/\t/,/g' > /tmp/out.csv `

gnuplot gnudg.sh

echo "<img src="http://172.16.0.19/report/histreport.png" alt="DG-Reports">"

echo "</body>"
echo "</html>" `

脚本权限:

ls -l /var/www/cgi-bin/ssdg/ssdgplot.sh

-rwxr-xr-x 1 root root 1589 Apr 22 12:41 /var/www/cgi-bin/ssdg/ssdgplot.sh

1 个答案:

答案 0 :(得分:1)

对于mysql,您可以使用从reference1reference2读取的选项文件 您可以设置用户名和密码等值

[db-details]
user=username
password=password

并读取此文件以在脚本中登录db。 并且为了避免其他人读取除root之外的其他内容,只需将权限视为

chmod 600 option_file