连接到远程mysql在终端中工作,而不是通过PHP PDO脚本

时间:2014-11-19 17:36:04

标签: mysql pdo

我在这里遇到一个奇怪的问题 我们有一个存储app文件的服务器A. 和带有数据库的B服务器

尝试使用命令

通过命令提示符从服务器A连接到B.
mysql -h xx.xx.xx.xx -u root -p password - and it worked 

我是否尝试在服务器A中创建一个PHP脚本以连接到服务器B. 命令是

$this->db=new PDO('mysql:host=xx.xx.xx.xx;dbname=databasename','root','password');
  

连接失败:SQLSTATE [HY000] [2003]无法连接到MySQL   服务器on&x; xx.xx.xx.xx' (13)致命错误:未捕获的异常   '异常'消息' SQLSTATE [HY000] [2003]无法连接   MySQL服务器位于&x; xx.xx.xx.xx' (13)'

无法找到解决方案。

对此有任何帮助吗?

谢谢

3 个答案:

答案 0 :(得分:4)

我通过在数据库服务器中运行命令来实现它:)

setsebool httpd_can_network_connect_db=1

感谢回复yycdev

答案 1 :(得分:1)

尝试在连接字符串中指定端口,并确保数据库服务器设置为允许远程连接并且防火墙上的端口已打开(我怀疑这两个端口已经完成,因为您可以通过终端进行连接但是它永远不会伤害验证和检查事物。)

更改您的PDO连接并添加端口= 3306,或者如果您正在使用MAMP使用端口8889

$this->db=new PDO('mysql:host=xx.xx.xx.xx;port=3306;dbname=databasename','root','password');

要检查的另一件事是 - SELinux是否阻止了网络连接。以root身份登录并运行

setsebool -P httpd_can_network_connect=1

答案 2 :(得分:0)

我对此并不了解,但尝试将端口放在脚本的后面:

$this->db=new PDO('mysql:host=xx.xx.xx.xx;dbname=databasename','root','password',3306);