2013-10-07 2 views
1

원격 데이터베이스에 연결하려고하는 connection.php 파일이 있습니다. 내가 Toad를 통해 데이터베이스에 연결할 수 있기 때문에 MySQL 오류 111 서버에 연결할 수 없습니다.

<?php 
try { 
    $conn = new PDO('mysql:host=IP;port=PORT;dbname=DBNAME', 'USERNAME', 'PASSWORD'); 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 
?> 

지금 내가 믿는 내 모든 변수가 올바른지 : 다음은 코드입니다. 내가 localhost를 통해 내 자신의 데이터베이스 연결을 위해이 동일한 PDO 형식을 사용하고 잘 작동합니다. 문제가 무엇인지 잘 모르겠습니다. 이후로 나는 서버가 이미 그것에 대한 원격 액세스를 허용한다고 생각하지만, 나는 그것에 대해 잘 모르겠다 Toad 사용할 수 있습니다. 모든 입력이 좋을 것입니다.

또한이 PDOException과 함께 다시오고 있다는 오류입니다 :

SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'IP' (111) 
+0

http://dev.mysql.com/doc/refman/5.0/en/access-denied.html – hjpotter92

+0

Toad는 내 파일에 연결할 수 없으면 어떻게 데이터베이스에 연결할 수 있습니까? 그들은 같은 방식으로 연결하지 않으며 두 가지 모두 동일한 원격 권한이 필요합니까? 예 : 둘 다 작동하려면 바인드 주소가 필요합니까? 또는 작동하지 않습니까? –

답변

3

111 연결 그것은 아마 당신의 MySQL 서버 만 localhost 인터페이스를 듣는 것을 의미

을 거부 것을 의미한다.

이 같은 라인이있는 경우 : 당신은 당신의 my.cnf 설정 파일에 주석 (라인의 시작 부분에 #을 추가)와 MySQL을 다시 시작해야합니다

skip-networking 
bind-address = 127.0.0.1 

합니다.

+0

Toad를 통해 연결할 수 있고 데이터베이스를 볼 수는 있지만 여전히 로컬 호스트에서만 수신 대기 할 수 있습니까? –

0

아니라, 당신을 /etc/mysql/my.cnf : 이 알아봐야합니다 :

skip-networking 
bind-address = 127.0.0.1 

당신 돼 코멘트 첫 번째, 그리고 0.0.0.0이나 IP로 IP를 변경 (권장) 또한 원격 호스트에 연결할 사용자가 없을 수도 있습니다. 즉, mysql 사용자는 'root'@'192.168.1.1'과 같으므로 시도 할 수 있습니다 존재하지 않는 사용자와 액세스 할 수 있습니다. 그것을 창조하고 모든 특권을 부여하십시오. 그냥 MySQL의에서이 두 명령을 실행 CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY '***'; GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.1.100' IDENTIFIED BY '***';

는 또한 리눅스 사용하는 경우, mysql을 오른쪽 포트를 듣고 있는지 확인하십시오

netstat -tlpn

이 일을해야을, 적어도 그것은 비슷한 문제를 해결 한 방법입니다.

관련 문제