Connect () 함수를 사용하여 PHP의 데이터베이스에 연결할 때 "액세스 거부"오류가 발생하는 것이 일반적인 문제입니다. 이 오류는 일반적으로 데이터베이스에 연결하는 권한이 허용되지 않음을 나타냅니다. 이 기사는 이러한 문제를 해결하기위한 아이디어와 특정 방법을 자세히 소개하여 문제를 신속하게 찾아서 해결하는 데 도움이됩니다.
"Access Denied"는 일반적으로 데이터베이스 서버가 연결 요청을 거부합니다.
잘못된 사용자 이름 또는 비밀번호
연결된 호스트는 데이터베이스에 액세스 할 수 없습니다.
데이터베이스 사용자 권한이 충분하지 않습니다
데이터베이스 서버 구성 제한
이러한 유형의 문제는 MySQL과 같은 관계형 데이터베이스에서 일반적입니다.
PHP 코드에서 데이터베이스에 연결하는 코드는 다음과 유사합니다.
<?php
$servername = "m66.net";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
// 연결을 만듭니다
$conn = new mysqli($servername, $username, $password, $dbname);
// 연결을 확인하십시오
if ($conn->connect_error) {
die("연결이 실패했습니다: " . $conn->connect_error);
}
echo "연결이 성공적으로 연결됩니다";
?>
$ username 과 $ password 가 올바른지 확인하십시오. 잘못된 사용자 이름이나 암호로 인해 "액세스 거부"가 발생할 수 있습니다.
MySQL 사용자 권한은 사용자 이름과 user@localhost 및 user@192.168.1.1 과 같은 사용자 이름과 호스트의 조합을 기반으로합니다.
IP 주소 또는 원격 호스트를 사용하여 연결하여 데이터베이스 사용자가 해당 호스트에 액세스 할 수 있는지 확인하십시오.
SELECT user, host FROM mysql.user WHERE user='your_username';
권한이 충분하지 않은 경우 다음 명령을 사용하여 권한을 추가 할 수 있습니다.
GRANT ALL PRIVILEGES ON your_database.* TO 'your_username'@'your_client_ip' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
기본적으로 MySQL 서버는 로컬 연결 만 허용합니다. MySQLD 구성 파일의 BAND-ADDRESS 설정이 원격 액세스를 허용하는지 확인해야합니다.
일반적으로 구성 파일 /etc/mysql/my.cnf 가 다음에 있습니다.
bind-address = 0.0.0.0
모든 IP 연결이 허용됨을 나타냅니다. 127.0.0.1 인 경우 로컬 연결 만 허용됩니다.
방화벽은 데이터베이스 포트 (일반적으로 3306)가 대중에게 열리는 것을 방지하여 연결이 불가능할 수 있습니다. 명령을 사용하여 포트 연결을 감지 할 수 있습니다.
telnet m66.net 3306
연결이 실패하면 방화벽 설정을 확인하십시오.
연결이 실패하면 MySQLI_CONNECT_ERROR ()는 특정 오류 메시지를 제공 할 수 있습니다.
<?php
$conn = new mysqli("m66.net", "your_username", "your_password", "your_database");
if ($conn->connect_error) {
die("연결이 실패했습니다: " . $conn->connect_error);
}
?>
오류 프롬프트와 함께 대상 문제 해결을 수행하십시오.
Connect () 함수를 사용하여 PHP에서 "Access Denied"오류가 발생하면 다음 측면에서 확인해야합니다.
사용자 이름과 비밀번호가 올바른지 확인하십시오
데이터베이스 사용자가 해당 호스트에 액세스 할 수 있는지 확인
데이터베이스 서버의 원격 액세스 구성을 확인하십시오
네트워크 및 방화벽 설정을 확인하십시오
오류 메시지를 사용하여 포지셔닝을 돕습니다
위의 단계를 통해 기본적으로 연결 거부 문제를 찾고 해결할 수 있습니다.