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

标签 php mysql pdo hostname

我在两个不同的服务器上有 mysql 数据库和 php/apache:假设是 hostphp.domain.com 和 hostmysql.domain.com。

在 mysql 服务器上,我设置了一个用户“my_user”,该用户具有从特定主机“hostphp.domain.com”连接到“my_database”数据库的权限。

当我使用 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());
} 

最佳答案

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

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

尝试运行 mysql_select_db("my_database");连接到主机后,你应该会得到同样的错误。

关于php - 为什么 php PDO 在连接到远程托管的 mysql 数据库时使用与 mysql_connect() 使用的主机名不同的主机名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13002409/

相关文章:

php - 尝试从 PHP 执行 C 程序并将其输出到 Web 浏览器

PHP PDO MySQL 可滚动游标不起作用

php - 将 Active Record 数据插入 Yii 的 CGRidView 小部件

php - MySql 'LIKE' 查询执行缓慢

php - 如何从 PDOStatement 获取列名?

php - 仅当类别没有子类别时才尝试删除类别

PHP PDO exec() 和 commit() 有什么区别

php - 想要使用 php mysql 在水平表中显示结果

php - 在 MySQL 中存储数组?

c# - Windows应用程序-c#中的MySql错误System.InvalidOperationException