【发布时间】:2018-07-06 15:30:16
【问题描述】:
我正在使用远程数据库在 PHP 下开发一个 Web 应用程序,其中我有以下测试脚本:
try {
$dbh = new PDO('mysql:host=XXX.XXX.XXX.XXX;dbname=db_app;', $user, $password);
$date = ($dbh->query('SELECT NOW()');
print_r($date);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
exit();
当我运行它时,我得到以下输出:
错误!:SQLSTATE[HY000] [2003] 无法连接到“10.16.50.87”上的 MySQL 服务器 (60)
我仍然可以使用 MySQL 工作台和命令行界面连接到目标数据库。
来自this question 我知道远程服务器配置“可能是”问题。但是,我们有一个“兄弟”PHP 应用程序连接到同一台服务器没有问题,两者之间的唯一区别是用户名和密码,即使在我的应用程序上使用“兄弟”PHP 应用程序凭据运行测试时,也会出现相同的错误显示。所以看来只有我的PHP似乎有问题。
我正在 PHP 5.5.3 上运行测试,目标服务器正在运行 MySQL 5.5 我的应用程序和 Brother 应用程序都在 Staging Server A 上运行,并且都应该连接到 Staging Server B 中的 MySQL。Brother 应用程序也是用 PHP 编写的并且能够连接,但我的不是。我猜它可能是 MySQL 相关的 PHP 配置。
我的应用使用
PDO,而兄弟应用使用mysqli.兄弟应用和我的应用在同一台服务器上运行, 并连接到同一个目标服务器。
任何帮助将不胜感激。
【问题讨论】:
-
您写“我仍然可以使用 MySQL 工作台和通过命令行界面连接到目标数据库” - 从完全相同的系统使用完全相同的用户名和密码?试图排除明显的......
-
"
('SELECT NOW()') as $row)" --- 我没有掌握什么。 -
您是否检查过包含数据库服务器凭据的两个文件的编码?也许您的密码使用了一些花哨的非 ASCII 字符...
-
LOL fred,我压力很大,我只调整了我在另一个项目中使用的测试代码的一半。我会纠正的。而且,是的,我使用完全相同的系统/用户名/密码连接,唯一的区别是使用 Workbench 可以,使用 CLI 可以,兄弟应用程序使用 mysqli 成功连接,但我无法使用 PDO 或 mysqli 连接跨度>
-
此外...当用户名和密码组合错误时,MySQL 使用不同的错误消息
Access denied for user 'example'@'host (using password: YES)。