>  Q&A  >  본문

데이터베이스 연결 오류: 오류 유형 2002 - 권한이 거부되었습니다.

<p>다음 스크립트(cxn-test.php)를 사용하여 데이터베이스에 연결하려고 합니다</p> <pre class="brush:php;toolbar:false;"><?php $host = '155.30.136.20';//가상IP $user = 'abc_user'; $pass = 'xxxxxxxxx'; $dbname = '환영합니다'; $link = mysqli_connect($host, $user, $pass,$dbname); if (!$link) { echo "오류: MySQL에 연결할 수 없습니다." .PHP_EOL; echo "디버그 오류 번호:" . mysqli_connect_errno() . echo "디버그 오류 메시지:" . mysqli_connect_error() . 출구; }또 다른 { 에코 "성공" .PHP_EOL; }</pre> <p>단말기에서 시도했을 때</p> <인용문> <p>php cxn-test.php //성공</p> </인용문> <p>하지만 localhost에서 시도하면 다음 오류가 발생합니다.</p> <인용문> <p>curl -s http://localhost/cxn-test.php</p> </인용문> <p><code>오류: MySQL에 연결할 수 없습니다. 디버그 오류 번호: 2002 디버그 오류 메시지: 권한이 거부되었습니다</code></p> <p>이것은 이상한 문제입니다. localhost에서는 작동하지 않지만 명령줄에서는 잘 작동합니다. </p>
P粉757640504P粉757640504444일 전516

모든 응답(1)나는 대답할 것이다

  • P粉041881924

    P粉0418819242023-08-25 17:08:22

    SELinux를 실행하는 새 CentOS 7 상자를 구입한 후에도 동일한 문제가 발생했습니다. 명령줄을 통해 원격 MySQL 데이터베이스 서버에 연결할 수 있지만 Drupal(및 테스트 PHP 스크립트)은 연결할 수 없습니다.

    이 문제는 궁극적으로 SELinux 보안 정책으로 인해 발생했습니다.

    기본적으로 httpd_can_network_connect_db 정책은 비활성화되어 있습니다. 즉, 웹 서버 가 원격 데이터베이스에 접속할 수 수 없다는 의미입니다.

    다음 명령으로 확인하세요:

    getsebool -a | grep httpd

    httpd_can_network_connect_db가 꺼진 경우 다음 명령을 사용하여 활성화하세요.

    으아아아

    (-P 플래그는 변경 사항을 영구적으로 적용하므로 재부팅 후에도 설정이 그대로 유지됩니다.)

    회신하다
    0
  • 취소회신하다