在某些网络上无法通过 PDO 连接到 Mysql
Unable to Connect to Mysql Through PDO on Certain Networks
我正在尝试通过 PHP 的 PDO 连接到 MySQL 数据库。它在我的家庭网络和其他一些网络(咖啡店、public 互联网)上运行良好。当我尝试通过 phone 的个人热点或酒店 wifi 连接时,它不再有效。
我在相同的机器设置 (XAMPP VM - Mac) 中使用相同的登录信息。这是我的连接文件:
$DBO = "mysql:host=$DB_Servername;dbname=$DB_Name";
try {
$conn = new PDO($DBO, $DB_Username, $DB_Password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Connection Failed: " . $e->getMessage();
}
这是我遇到的错误:
Connection Failed: SQLSTATE[HY000] [2002] Connection timed out
我已经用网站地址和IP地址试过服务器名称。奇怪的是,当我使用 VS 代码数据库扩展时,我能够很好地连接到数据库(无论我在哪个网络上)。我不明白为什么这会起作用,但 PDO 不会。
我阅读了 this answer 关于在 'mysql: ' 之后添加 space 的内容,它 returns 这条新消息:
Connection Failed: SQLSTATE[HY000] [1045] Access denied for user 'dailyrts_realDB'@'localhost' (using password: YES)
我登录的用户帐户已分配给正确的数据库,并且正在注册我连接的新 IP。
dns_get_record returns:
dns_get_record(): A temporary server error occurred.
我无法使用 XAMPP-VM 找到修复程序,但是,在 MacOS 上使用应用程序的 XAMPP 安装程序版本时,相同的代码可以完美运行。我环顾了一下四周,看看是否还有其他人遇到了这个问题,但我没有找到任何与这个问题具体匹配的内容。大多数指的是连接到本地数据库。
This answer about accessing MySQL through the root user is pretty close to the issue I was having and they recommend following this guide 来解决这个问题。我不需要安装 VM 版本,所以我自己没有测试过,但它似乎对他有用。
我不确定为什么 VM 版本在连接到 MySQL 数据库时仅适用于 某些 网络而不适用于其他网络。我确定这与网络端的端口阻塞有关(移动热点提供商因阻塞端口而臭名昭著),并且因为 VM 版本处理网络流量的方式与常规版本不同。
MacOS 上的 VM 版本问题似乎是 。根据我(和其他人)的个人经验,如果可以的话,我建议您使用安装程序版本。它更发达,并且有更多的在线支持。
我正在尝试通过 PHP 的 PDO 连接到 MySQL 数据库。它在我的家庭网络和其他一些网络(咖啡店、public 互联网)上运行良好。当我尝试通过 phone 的个人热点或酒店 wifi 连接时,它不再有效。
我在相同的机器设置 (XAMPP VM - Mac) 中使用相同的登录信息。这是我的连接文件:
$DBO = "mysql:host=$DB_Servername;dbname=$DB_Name";
try {
$conn = new PDO($DBO, $DB_Username, $DB_Password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Connection Failed: " . $e->getMessage();
}
这是我遇到的错误:
Connection Failed: SQLSTATE[HY000] [2002] Connection timed out
我已经用网站地址和IP地址试过服务器名称。奇怪的是,当我使用 VS 代码数据库扩展时,我能够很好地连接到数据库(无论我在哪个网络上)。我不明白为什么这会起作用,但 PDO 不会。
我阅读了 this answer 关于在 'mysql: ' 之后添加 space 的内容,它 returns 这条新消息:
Connection Failed: SQLSTATE[HY000] [1045] Access denied for user 'dailyrts_realDB'@'localhost' (using password: YES)
我登录的用户帐户已分配给正确的数据库,并且正在注册我连接的新 IP。
dns_get_record returns:
dns_get_record(): A temporary server error occurred.
我无法使用 XAMPP-VM 找到修复程序,但是,在 MacOS 上使用应用程序的 XAMPP 安装程序版本时,相同的代码可以完美运行。我环顾了一下四周,看看是否还有其他人遇到了这个问题,但我没有找到任何与这个问题具体匹配的内容。大多数指的是连接到本地数据库。
This answer about accessing MySQL through the root user is pretty close to the issue I was having and they recommend following this guide 来解决这个问题。我不需要安装 VM 版本,所以我自己没有测试过,但它似乎对他有用。
我不确定为什么 VM 版本在连接到 MySQL 数据库时仅适用于 某些 网络而不适用于其他网络。我确定这与网络端的端口阻塞有关(移动热点提供商因阻塞端口而臭名昭著),并且因为 VM 版本处理网络流量的方式与常规版本不同。
MacOS 上的 VM 版本问题似乎是