CGI 스크립트에서 mysql을 사용한 자동 로그인

CGI 스크립트에서 mysql을 사용한 자동 로그인

쿼리를 실행 CGI하는 스크립트를 작성했습니다 . MySQL 인증의 경우 아래와 같이 .my.cnf 파일에 자격 증명을 제공하여 자동 로그인을 사용합니다.bashMySQL

# 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-filemysql의 매개변수를 사용하여 사용하려는 cnf 파일을 지정할 수 있습니다.

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

관련 정보