gpt4 book ai didi

php - 远程连接的 Mysql PDO 访问被拒绝,但 Mysql CLI 可以工作

转载 作者:行者123 更新时间:2023-11-29 15:23:54 25 4
gpt4 key购买 nike

我正在尝试从我的 Web 服务器连接到远程 Mysql 服务器。我按照以下步骤操作:

在远程服务器上:

1. “CREATE USER ’newremoteuser’@‘web-server_ip' IDENTIFIED BY 'remote_user_password’;”
2. “GRANT ALL PRIVILEGES ON *.* TO 'newremoteuser'@'web_server_ip’;”
3. “FLUSH PRIVILEGES;”

在Web服务器上,当我尝试使用Mysql CLI访问时,连接成功。

"mysql -u newremoteuser -h remote_server_ip -p"

但是,当我尝试在 PHP 中使用 PDO 或 Mysqli 连接到远程服务器时,出现错误

“FastCGI 在 stderr 中发送:”PHP 消息:PHP fatal error :未捕获异常 'PDOException',消息为 'SQLSTATE[28000] [1045] 用户 'newremoteuser'@'my-domain-name.com' 的访问被拒绝 (使用密码:是)'

下面是PDO代码

$REMOTEPDO = new PDO("mysql:host=$remote_server_ip;port=3306;dbname=$remote_db", $newremoteuser, $remote_user_password);
$REMOTEPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

我认为它拒绝访问“newremoteuser”@“my-domain-name.com”,因为我添加的远程用户是“newremoteuser”@“web-server_ip”。但是,我找不到解决方案。谁能指出我正确的方向吗?

注意:“my-domain-name.com”是我的“web_server_ip”服务器上托管的网站名称。

远程服务器是 Ubuntu 18,Web 服务器是 Ubuntu 14。

最佳答案

正如您所指出的,更改该用户的主机可能会解决您的问题,因为连接被拒绝似乎是由于主机不匹配造成的。尝试将现有用户的主机从 IP 地址更新为域名:

UPDATE mysql.user SET Host='my-domain-name.com' WHERE User='username';
FLUSH PRIVILEGES;

如果仍然不起作用,可能值得将主机更新为“%”,然后看看它是否允许您连接。

关于php - 远程连接的 Mysql PDO 访问被拒绝,但 Mysql CLI 可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59179545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com