2012-10-08 4 views
1

PDO를 사용하여 원격 mysql 서버에 연결하려고합니다. 그러나 dsn에 제공된 호스트 이름이나 IP 주소에 관계없이 스크립트가 실행될 때 항상 주소가 웹 서버가 실행중인 로컬 서버의 호스트 이름으로 되돌아갑니다.PHP PDO가 원격 호스트를 로컬 호스트 이름으로 변경합니다.

Google이 제안한 것은 SELinux와 관련이 있으며 원격 데이터베이스에 연결할 수있는 기능을 제공하지만 SELinux를 사용하지 않도록 설정했습니다.

배포판 : 우분투 11.04 64

아파치 버전 : 2.2.17

PHP 버전 : PHP 5.3.5-1ubuntu7.11와 수호신 - 패치 (CLI)

편집 :

요청에 따라 코드가 추가되었습니다. 비록 내가 로컬 서버에서 제대로 작동하지만 이것이 원격 연결을 허용하지 않기 때문에 이것이 내 코딩 문제라고 생각하지 않는다.

public function db_connect($driver, $dbhost, $dbname, $user, $pass) { 
    $dsn = $driver . ':host=' . $dbhost . ';dbname=' . $dbname; 
    try { 
     $this->DB = new PDO($dsn, $user, $pass); 
    } 
    catch (PDOException $err) { 
     print 'Database Connection Failed: ' . $err->getMessage(); 
     die(); 
    } 
} 

$remote_db = new DB('mysql', 'remote_server.domain.tld', 'database_name', 'user_name', 'password'); 

이것은받는 오류 메시지입니다.

데이터베이스 연결 실패 : SQLSTATE가 [28000] [1045] 액세스는 사용자 user_name'@'local_server.domain.tld '거부 (암호 사용 : YES)를 그 오류가 말을하지 않는

+0

여기에 코드를 게시하지 않으 셨습니다. 어떻게 도와 드릴까요? – FtDRbwLXw6

+0

필요에 따라 관련 코드를 제공하십시오. 비록 내가 완벽하게 작동하므로 이것이 내 코드 문제로 생각하지 않습니다. 내가 테스트 데이터를 가지고있는 로컬 서버. 이제 원격 서버에있는 라이브 데이터를 사용하려고합니다. – Wader

+1

@WadeUrry, 코드는 항상 이와 같은 질문에 적절합니다. – Brad

답변

1

당신은 local_server.domain.tld에 연결되어 있습니다, 그것은 그것이 단지 에서까지를 연결하고 있다고 간단히 말합니다. 오류는 GRANT 또는 기타 인증 문제와 관련이 있어야합니다.

관련 문제