PHP에서 Connect () 함수 (또는 MySQLI의 MySQLI_Connect () 와 같은 유사한 연결 함수)는 데이터베이스 연결을 구현하는 핵심 단계입니다. 연결 실패는 개발에서 일반적인 문제입니다. 특히 초보자에게는 문제 해결 문제가 까다로울 수 있습니다. 이 기사는 연결 실패의 상위 10 가지 일반적인 원인을 자세히 분석하고 해당 솔루션을 제공하여 문제를 더 빨리 찾는 데 도움이됩니다.
이유 : Connect () 함수의 호스트 이름 (호스트)은 잘못된 IP 주소 또는 도메인 이름으로 작성됩니다.
해결책:
데이터베이스 서버 주소가 올바른지 확인하십시오. 예를 들어, 글을 쓰는 올바른 방법은 비슷해야합니다.
$conn = mysqli_connect('m66.net', 'username', 'password', 'database');
데이터베이스가 로컬 컴퓨터에있는 경우 '127.0.0.1' 또는 'localhost'를 사용하는 것이 좋습니다.
원인 : 데이터베이스 계정 또는 비밀번호가 잘못 채워져 신원 확인 실패가 발생합니다.
해결책:
$conn = mysqli_connect('m66.net', '올바른 사용자 이름', '올바른 비밀번호', '데이터베이스 이름');
if (!$conn) {
die('연결이 실패했습니다,오류 메시지:' . mysqli_connect_error());
}
사용자 이름과 비밀번호가 정확하고 액세스 권한이 있는지 확인하십시오.
원인 : MySQL 또는 기타 데이터베이스 서비스가 실행되지 않아 연결을 설정할 수 없습니다.
해결책:
데이터베이스 서비스가 시작되었는지 확인하십시오. 명령 줄을 통해 실행할 수 있습니다.
sudo service mysql status
또는 시스템의 서비스 관리 도구를 사용하여 서비스를 시작하십시오.
원인 : 방화벽은 데이터베이스 포트에 대한 액세스를 차단합니다 (기본 3306).
해결책:
서버 방화벽 설정을 확인하여 포트 3306 (또는 사용자 정의 포트)이 열려 있는지 확인하십시오. Linux에서 일반적으로 사용되는 명령 :
sudo ufw allow 3306
클라우드 서버는 보안 그룹 규칙을 수정해야 할 수도 있습니다.
원인 : 연결 중에 잘못된 포트 번호가 지정되었습니다.
해결책:
기본 포트는 3306입니다. 데이터베이스가 사용자 정의 포트를 사용하는 경우 명확하게 지정해야합니다.
$conn = mysqli_connect('m66.net', 'username', 'password', 'database', 3307);
원인 : 사용자는 현재 호스트에서 데이터베이스에 액세스 할 수있는 권한이 없습니다.
해결책:
데이터베이스에 로그인하고 권한 부여 명령을 실행하십시오.
GRANT ALL PRIVILEGES ON database.* TO 'username'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
여기서 '%'는 모든 호스트에 액세스 할 수 있고 특정 IP도 지정할 수 있음을 의미합니다.
원인 : MySQLI 또는 PDO 확장은 PHP 환경에 설치되지 않았거나 버전이 호환되지 않습니다.
해결책:
PHP 환경이 관련 확장을 올바르게 설치했는지 확인하십시오.
php -m | grep mysqli
설치되지 않은 경우 패키지 관리자를 사용하여 설치해야합니다.
sudo apt-get install php-mysqli
원인 : 네트워크 지연 또는 불안정성, 연결 요청 시간이 초과되었습니다.
해결책:
데이터베이스 서버를 핑하고 네트워크가 원활한 지 확인하십시오.
ping m66.net
네트워크 환경을 최적화하거나 필요한 경우 연결 시간 초과 설정을 추가하십시오.
원인 : 도메인 이름을 올바르게 해결할 수 없으므로 연결 고장이 발생합니다.
해결책:
대신 IP 주소에 연결하거나 기본 DNS 구성을 확인하십시오.
$conn = mysqli_connect('192.168.1.100', 'username', 'password', 'database');
원인 : 서버의 데이터베이스 버전은 특정 연결 방법을 제한하거나 my.cnf 와 같은 구성 파일을 원격 연결을 제한합니다.
해결책:
데이터베이스 구성 파일을 확인하고 바인딩 주소를 확인하십시오.
bind-address = 0.0.0.0
데이터베이스 서비스를 다시 시작한 후 모든 IP 연결이 허용되고 효과적임을 나타냅니다.