为什么php PDO在连接到远程托管的mysql数据库时使用与mysql_connect()使用的主机名不同的主机名?

时间:2012-10-21 21:31:38

标签: php mysql pdo hostname

我在两个不同的服务器上使用了mysql数据库和php / apache:比如说hostphp.domain.com和hostmysql.domain.com。

在mysql服务器上,我设置了一个用户“my_user”,其权限是从特定主机“hostphp.domain.com”连接到“my_database”db。

当我使用mysql_connect连接到它时,它做对了。但是当我通过php PDO这样做时,我得到了这个错误:

SQLSTATE[42000] [1044] Access denied for user 'my_user'@'%' to database 'my_database'

我做了一些测试,发现问题是...... @'%',mysql拒绝连接,因为“my_user”没有从任何主机连接的权限。

此外,我尝试使用错误的密码使用mysql_connect连接以查看错误,我得到了这个:

Could not connect: Access denied for user 'my_user'@'hostphp.domain.com' (using password: YES).

区别在于.. @'%'和... @'hostphp.domain.com'。

这就是我的问题,为什么php pdo在连接到远程主机时不会声明主机名? (或者做错了)。

谢谢,对不起我的英语。

编辑。 一些代码示例,这不起作用:

try {
    $pdo = new PDO(
        'mysql:host=hostmysql.domain.com;port=3306;dbname=my_database',
        'my_user',
        'my_pass'
    );
} catch (PDOException $e) {
    die($e->getMessage());
}

但是这样可行:

$conn = mysql_connect('hostmysql.domain.com', 'my_user', 'my_pass');
if (!$conn) {
    die('Could not connect: ' . mysql_error());
} 

1 个答案:

答案 0 :(得分:2)

您已使用mysql_connect成功连接到主机,但没有错误,因为您没有尝试选择数据库。

您的用户可能无法访问您的数据库。

尝试运行mysql_select_db(“my_database”);连接到主机后,您应该得到相同的错误。