현재 위치: > 최신 기사 목록> PHP 함수 연결에서 "호스트가 연결되지 않음"오류의 문제를 해결하는 방법은 무엇입니까?

PHP 함수 연결에서 "호스트가 연결되지 않음"오류의 문제를 해결하는 방법은 무엇입니까?

M66 2025-08-05

데이터베이스 연결에 PHP를 사용할 때 일반적인 실수 중 하나, 특히 MySQLI_CONNECT () 또는 PDO를 사용하여 데이터베이스에 연결할 때는 다음과 같습니다.

 Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server

이 오류 메시지는 데이터베이스 서버가 현재 클라이언트 서버의 허가 구성이 클라이언트 IP 주소가 연결을 허용하지 않기 때문에 현재 클라이언트 호스트의 연결 요청을 거부 함을 의미합니다.

이 기사는이 문제를 해결하고 해결하는 방법을 자세히 설명합니다.


1. 오류의 원인을 이해하십시오

MySQL 서버를 사용하면 사용자가 연결할 수있게되면 사용자 이름과 비밀번호를 확인할뿐만 아니라 연결이 나오는 호스트 주소를 확인합니다. 즉, 사용자 이름과 비밀번호가 올바른 경우에도 연결 호스트가 승인되지 않은 경우 거부됩니다.

기본적으로 MySQL은 LocalHost (기본) 연결 만 허용하며 원격 연결에는 추가 구성이 필요합니다.


2. 연결에서 사용하는 호스트 이름 또는 IP를 확인하십시오.

연결할 때 어떤 호스트 이름이나 IP가 전달됩니까? 일반적으로 다음과 같은 PHP 코드로 작성됩니다.

 $mysqli = new mysqli('db.m66.net', 'user', 'password', 'database');

여기 호스트 이름이 데이터베이스 서버의 올바른 IP 또는 도메인 이름인지 확인하십시오.


3. 호스트와의 연결을 승인하십시오

"호스트가 연결되지 않도록 허용되지 않는"문제를 해결하려면 MySQL 서버에서 지정된 클라이언트 호스트를 승인해야합니다.

데이터베이스 사용자 이름이 DBuser 라고 가정하면 원격 호스트 IP 123.123.123.123 의 연결을 허용해야합니다.

 GRANT ALL PRIVILEGES ON database.* TO 'dbuser'@'123.123.123.123' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

모든 호스트 연결을 허용하려면 (생산 환경에 권장되지 않음) % 와일드 카드 문자를 사용할 수 있습니다.

 GRANT ALL PRIVILEGES ON database.* TO 'dbuser'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

4. 원격 연결을 허용하도록 MySQL 구성을 수정하십시오

MySQL은 기본적으로 127.0.0.1 로 바인딩되며 기본 액세스 만 제한됩니다.

mysql configuration 파일 (일반적으로 /etc/mysql/my.cnf 또는 /etc/mysql/mysql.conf.d/mysqld.cnf )을 열고이 줄을 찾으십시오.

 bind-address = 127.0.0.1

변경 :

 bind-address = 0.0.0.0

그런 다음 MySQL 서비스를 다시 시작하십시오.

 sudo service mysql restart

5. 방화벽 구성

서버 방화벽이 MySQL 기본 포트 3306에 대한 외부 액세스를 허용하는지 확인하십시오.

예를 들어 UFW 사용 :

 sudo ufw allow 3306/tcp

6. PHP 샘플 코드

데이터베이스 서버 주소가 db.m66.net 이라고 가정하면 연결 코드 예 :

 <?php
$host = 'db.m66.net';
$user = 'dbuser';
$password = 'password';
$dbname = 'database';

$mysqli = new mysqli($host, $user, $password, $dbname);

if ($mysqli->connect_error) {
    die('연결이 실패했습니다: (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}

echo '연결이 성공적으로 연결됩니다!';

$mysqli->close();
?>

7. 추가 문제 해결 제안

  • 사용자 이름과 비밀번호가 올바른지 확인하십시오.

  • PHP 및 MySQL 서버 네트워크가 상호 운용 가능하고 Ping 또는 Telnet DB.M66.NET 3306을 사용하여 테스트 할 수 있습니다.

  • 데이터베이스 사용자 권한을 확인하여 사용자가 지정된 데이터베이스에 액세스 할 수있는 권한이 있는지 확인하십시오.

  • 자세한 내용은 MySQL 오류 로그를 확인하십시오.