PDO持续连接错误的IP

时间:2017-09-30 20:46:57

标签: php pdo wamp wampserver

当我尝试使用此代码从我的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地址。

我之前尝试过此代码并且它没有任何问题,但现在突然出于原因,我仍然不知道,它会尝试连接到我自己的IP并失败。我做错了什么?

1 个答案:

答案 0 :(得分:1)

我的 root 用户和其他用户遇到了完全相同的问题。我试图使用 PDO() 从另一个远程服务器 B 连接到远程服务器 A。虽然,我可以使用 CLI 而不是通过 PDO 从远程服务器 B 登录到 mysql 远程服务器 A。

两个远程服务器都在运行:

  • Ubuntu 20.04
  • 使用 readline 5.2 分发 10.3.25-MariaDB

问题是我的 root 和用户密码中的特殊字符。有#, (, !, )。所以我更改了密码,它开始工作了。

我真的扫描了整个互联网两天来解决这个问题。不知道这可能是密码。