【发布时间】:2018-03-12 10:13:33
【问题描述】:
当我尝试使用此代码从我的 WAMP 服务器安装连接到我的外部服务器(允许外部连接)时:
const SERVER = 'xxx.xxx.xxx.xx'; // Redacted, the target servers IP
const PORT = 3306;
const DATABASE = 'xxx'; // Redacted
const USERNAME = 'xxx'; // Redacted
const PASSWORD = 'xxx'; // Redacted
const TIMEOUT = 5;
try
{
$pdo = new PDO('mysql:dbname=' . DATABASE . ';host=' . SERVER . ';port=' . PORT, USERNAME, PASSWORD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_TIMEOUT => TIMEOUT));
}
catch (PDOException $e)
{
echo $e->getMessage();
}
我收到以下错误消息:
SQLSTATE[HY000] [1045] Access denied for user 'main'@'xxx.xxx.xxx.xx' (using password: YES)
其中 IP 地址是我的外部(不是 LAN)IP 地址,而不是我指定的地址。
我之前尝试过这段代码,它运行时没有任何问题,但现在突然由于我不知道的原因,它尝试连接到我自己的 IP 并失败。我做错了什么?
【问题讨论】:
-
外部服务器是在您的局域网之外还是在您的局域网中?如果它位于您 LAN 以外的 Internet 上的其他位置,您需要将
GRANT发送给您的外部(路由器、NAT)IP 地址上的用户。 -
@MichaelBerkowski 我已经这样做了,正如我在帖子中所说,到目前为止一切正常。
-
它尝试连接到我自己的 IP 并失败 错误
Access denied for user 'main'@'xxx.xxx.xxx.xx'表示 MySQL 的基于主机的身份验证拒绝来自您的外部(NAT/路由器)IP 的访问,而不是 PDO 正在尝试 connect 到该 IP。假设您对 MySQL 服务器具有其他管理访问权限,您需要检查您的用户main的授权。 MySQL auth 是用户名、密码和 连接主机 的组合,即使是同一个用户也可以从 2 个不同的源主机获得 2 个不同的密码。 -
您究竟是如何允许外部连接到您的远程数据库服务器的
标签: php pdo wamp wampserver