CGI脚本中使用mysql自动登录

CGI脚本中使用mysql自动登录

我编写了一个CGI脚本,用于bash执行MySQL查询。对于 MySQL 身份验证,通过在 .my.cnf 文件中提供凭据来使用自动登录,如下所示。

# the following section will be read by *all* client programs
[client]
user=dbuser
password=password

由于CGI程序是作为apache用户执行的,所以我将.my.cnf放在apache的主目录下。

  # grep apache /etc/passwd
  apache:x:48:48:Apache:/var/www:/sbin/nologin

 # ls -l /var/www/.my.cnf
 -rw------- 1 apache apache 97 Apr 23 12:36 /var/www/.my.cnf

但看起来这不起作用,因为 mysql 查询没有被执行。我实际上很困惑应该将 .my.cnf 放在哪里,以便 CGI 脚本中的 mysql 查询可以从该位置读取它。

脚本的代码片段如下

#!/bin/bash

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

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

mysql -h 192.168.2.140 -D mysql -e "select User from mysql;"

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

答案1

您可以使用--defaults-extra-filemysql 的参数来指定它要使用的 cnf 文件:

mysql --defaults-extra-file=/var/www/.my.cnf -h 192.168.2.140 -D mysql -e "select User from mysql;"

相关内容