クエリを実行するCGI
スクリプトを作成しました。 MySQL 認証の場合は、次のように .my.cnf ファイルに資格情報を提供して自動ログインを有効にします。bash
MySQL
# the following section will be read by *all* client programs
[client]
user=dbuser
password=password
CGIプログラムはApacheユーザーとして実行されるため、Apacheのホームディレクトリに.my.cnfを配置しました。
# 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クエリが実行されていないため、これはうまくいかないようです。実際には、CGIスクリプトのmysqlクエリがその場所から読み取れるように.my.cnfをどこに置くべきか混乱しています。
スクリプトのコードスニペットは次のとおりです。
#!/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-file
mysqlのパラメータを使用して、使用したいcnfファイルを指定できます。
mysql --defaults-extra-file=/var/www/.my.cnf -h 192.168.2.140 -D mysql -e "select User from mysql;"