繁体   English   中英

远程连接拒绝 Mysql PDO 访问,但 Mysql CLI 有效

[英]Mysql PDO access denied for remote connection but Mysql CLI works

我正在尝试从我的 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 在标准错误中发送:”PHP 消息:PHP 致命错误:未捕获的异常 '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;

如果它仍然不起作用,可能值得将主机更新为 '%' 并查看它是否可以让您连接。

我刚刚经历了这个。 我可以连接命令行,但不能连接 PDO。 在我在客户端服务器的 SELinux 上启用 httpd_can_network_connect_db 并重新启动之前,我的网络服务器客户端不会连接。

sudo setsebool -P httpd_can_network_connect_db 1

我忘记了重启,追我的尾巴比必要的时间长了一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM