>백엔드 개발 >PHP 튜토리얼 >PHP_php 팁에서 localhost를 사용하여 Mysql에 실패한 연결에 대한 해결 방법

PHP_php 팁에서 localhost를 사용하여 Mysql에 실패한 연결에 대한 해결 방법

WBOY
WBOY원래의
2016-05-16 20:37:551107검색

발견된 문제

어제 동료들이 Linux 환경을 컴파일하고 설치하는 것을 도왔을 때 문제가 발생했습니다.
웹 서버는 Apache이고 데이터베이스는 MySQL입니다.

그래서 데이터베이스 연결을 테스트하기 위해 PHP 페이지를 작성했습니다.

코드 복사 코드는 다음과 같습니다.
$mysql = mysql_connect('localhost','root','' );

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입니다. 예

호스트를 열고 가입하세요

코드 복사 코드는 다음과 같습니다.

127.0.0.1qttc

qttc 사용시 호스트 연결은 정상인데 localhost가 인식되지 않습니다.

다른 로컬 호스트 연결 방법으로 인해

PHP에서 데이터베이스에 연결할 때 localhost를 채우는 호스트와 다른 호스트의 차이점을 이해하기 위해 많은 정보를 읽고 마침내 배웠습니다.

호스트가 localhost로 채워지면 mysql은 unix 도메인 소켓 연결을 사용합니다
호스트가 127.0.0.1로 채워지면 mysql은 tcp를 사용하여 연결합니다
이는 Linux 소켓 네트워크의 기능이므로 win 플랫폼에서는 이 문제가 발생하지 않습니다.

솔루션

my.cnf의 [mysql] 섹션에
을 추가하세요.

코드 복사 코드는 다음과 같습니다.
protocol=tcp

MySQL을 저장하고 다시 시작하면 문제가 해결됩니다!
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.