발견된 문제
어제 동료들이 Linux 환경을 컴파일하고 설치하는 것을 도왔을 때 문제가 발생했습니다.
웹 서버는 Apache이고 데이터베이스는 MySQL입니다.
그래서 데이터베이스 연결을 테스트하기 위해 PHP 페이지를 작성했습니다.
http://localhost/test.php를 열어 테스트하세요
팁: 소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다...
환경이 정상적인지 확인
데이터베이스가 시작되지 않은 줄 알고 MySQL이 진행 중인지 확인하고 MySQL을 다시 시작했습니다.
mysql -u root -p를 사용하여 MySQL 운영 인터페이스에 들어갑니다
/usr/local/php5/bin/php /web/test.php를 직접 사용하여 데이터베이스에 연결합니다
아파치도 다시 시작했는데 여전히 안되네요
의심스러운 점: 웹페이지 실행에 실패했는데 명령은 성공적으로 실행된 이유
지금 기분이 우울하네요. php 명령어로 직접 실행하면 성공하는데 웹페이지로 실행하면 실패하네요. 아파치 때문에 발생하는 걸까요? 인터넷에서 많은 정보를 검색했지만 해결책을 찾지 못했습니다. Apache를 다시 컴파일하고 설치한 후에도 문제가 계속 발생합니다.
localhost를 127.0.0.1로 성공적으로 변경했습니다
localhost를 127.0.0.1로 변경한 후 연결에 성공했습니다. 'localhost가 실패했는데 127.0.0.1이 성공했다?'라는 딜레마에 빠지기 시작했습니다.
Ping 로컬 호스트 주소는 127.0.0.1입니다. 예
호스트를 열고 가입하세요
다른 로컬 호스트 연결 방법으로 인해
PHP에서 데이터베이스에 연결할 때 localhost를 채우는 호스트와 다른 호스트의 차이점을 이해하기 위해 많은 정보를 읽고 마침내 배웠습니다.
호스트가 localhost로 채워지면 mysql은 unix 도메인 소켓 연결을 사용합니다
호스트가 127.0.0.1로 채워지면 mysql은 tcp를 사용하여 연결합니다
이는 Linux 소켓 네트워크의 기능이므로 win 플랫폼에서는 이 문제가 발생하지 않습니다.
솔루션
my.cnf의 [mysql] 섹션에
을 추가하세요.