2012-10-08 165 views
1

我试图使用PDO连接到远程mysql服务器。但是,无论我在dsn中提供的主机名或IP地址如何,当脚本运行时,它都会将地址恢复为运行Web服务器的本地服务器的主机名。PHP PDO将远程主机更改为本地主机名

谷歌认为这可能与SELinux有关,并且可以连接到远程数据库,但是我禁用了SELinux。

发行版:Ubuntu的11.04 64

Apache的版本:2.2.17

PHP版本:PHP 5.3.5-1ubuntu7.11用了Suhosin贴片(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,Code始终与此类问题相关。 – Brad

回答

1

该错误不说你连接到local_server.domain.tld,它只是说明你正在连接。错误必须与您的GRANT或其他身份验证问题有关。