쿼리를 실행 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;"