使用脚本进行 MySQL 身份验证,无需以纯文本形式提供密码

标签 mysql bash security authentication cgi

我使用 bash 编写了一个 CGI 脚本,该脚本执行 MySQL 查询。由于我的目的是自动执行任务,因此我必须将 MySQL 凭据 放入脚本中,并且仅使用纯文本形式的密码。对我来说,问题是执行脚本的服务器是具有外部访问权限的生产服务器。我正在寻找一种保留自动化但不提供纯文本密码的解决方案。

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根根1589年4月22日12:41/var/www/cgi-bin/ssdg/ssdgplot.sh

最佳答案

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

[db-details]
user=username
password=password

并读取此文件以在脚本中登录数据库。 并避免除 root 之外的其他人读取它,只需将权限设置为

chmod 600 option_file

关于使用脚本进行 MySQL 身份验证,无需以纯文本形式提供密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23216341/

相关文章:

php - mysql单次查询获取最新10条结果

Bash:从文件到一个命令参数的多行

regex - 将文件夹中的所有图像移动到子文件夹,并将文本文件中对这些图像的所有引用更新到它们的新位置?

java - 打包并分发 DigitalPersona 指纹小程序

security - Hadoop 上的 Kerberos

mysql - 将 2 个或更多结果合并在一起?

mysql - 如果为空则忽略其他日期范围(mysql)

mysql - 想使用存储过程在mysql数据库中插入值

bash - 使用 sed 将 1234.0 更改为 1234 但保留 1.0234

php - 清理 $_POST 变量