当我尝试使用此代码从我的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并失败。我做错了什么?
答案 0 :(得分:1)
我的 root 用户和其他用户遇到了完全相同的问题。我试图使用 PDO() 从另一个远程服务器 B 连接到远程服务器 A。虽然,我可以使用 CLI 而不是通过 PDO 从远程服务器 B 登录到 mysql 远程服务器 A。
两个远程服务器都在运行:
问题是我的 root 和用户密码中的特殊字符。有#, (, !, )
。所以我更改了密码,它开始工作了。
我真的扫描了整个互联网两天来解决这个问题。不知道这可能是密码。