PDO를 사용하여 외부 데이터베이스에 연결하려고합니다.PDO가 포트와 함께 작동하지 않습니다.
$dbh = new PDO('mysql:host=hotsname;port=3309;dbname=dbname', 'root', 'root');
그러나 이것은 내가 가지고있는 특정 서버에서 작동하지 않습니다.
아마도 특정 호스트 만 허용되었다고 생각했지만 mysql 규칙을 확인한 다음 개인적으로 연결이 설정된 서버에서이 코드를 시도했습니다.
은 그래서 코드를 작동하는 내 측면에 더 블록은 없다는 것을 방화벽이 포트 3309에 요청을 받아들이고 포트 3306
에 올바른 서버에 전달하고 있는지 그래서 문제는 전적으로 켜져 하나의 서버. 테스트로서 나는 포트를 지정하지 않고 코드를 테스트하기 위해 포트 3306을 열 것이라고 생각했습니다.
$dbh = new PDO('mysql:host=hotsname;dbname=dbname', 'root', 'root');
이것은 곧바로 적용됩니다.
내 질문은 왜 포트를 추가 할 때 데이터베이스에 연결할 수 없게되는지입니다. 이 문제가있는 것은이 특정 서버뿐입니다.
많은 시간 내 주셔서 감사합니다.
업데이트
주어진 오류가 단순히 "xxx.xxx.xxx.xxx에서 MySQL 서버에 연결할 수 없습니다"입니다.
나는 조금 더 나아갔습니다. 3306을 사용하여 3306 서버로 들어오는 것을 허용하는 방화벽 규칙을 제공하면 코드가 작동합니다. 따라서 포트를 지정 했더니이 포트를 무시하고 3306에서 나가야합니다.
포트 * 3309를 차단하는 * 클라이언트 * 시스템에 * 아웃 바운드 * 방화벽 규칙이있을 수 있습니까? –
작동 대신 무엇을합니까? (어떤 오류가 발생합니까?) 연결하는 사용자가 연결중인 호스트에서 원격으로 연결할 권한이 있습니까? MySQL이 TCP 연결을 듣고 있습니까 ('skip-networking'은 my.cnf에서 활성화되지 않았습니다). –
@MichaelBerkowski 제 질문을 업데이트했습니다. 또한'skip-networking'도 사용할 수 없습니다. 연결하는 사용자는 다른 서버에서 같은 코드를 사용하여 mysql 테이블을 검사하고 허용 된 호스트가 와일드 카드 '%'인지 확인하는 것만 큼 나에게 입증 된 사용 권한을가집니다. 확실히 문제가있는 서버가 포트를 완전히 무시하고 3306 만 사용하는 것처럼 보입니다. cpanel을 사용하는 호스팅 된 서버입니다. –