mysqli通过IP地址连接但不使用主机名

时间:2015-04-03 06:09:11

标签: php database mysqli

我在远程主机上使用mysqli进行测试运行,使用IP地址工作正常,但不能使用完全限定的域名。 DNS已正确映射,我可以使用浏览器浏览页面并ping成功

$ mysqli = new mysqli(" www.testdomain.com"," uname"," passwd"," database");

有什么建议吗? mysql正在Centos 6上运行

1 个答案:

答案 0 :(得分:0)

首先,除非您有特殊原因需要在www.之前添加testdomain.com(例如,testdomain.comwww.testdomain.com指向不同的地址),在主机名中没有www.的情况下再试一次。

在托管php应用程序的计算机上尝试nslookup testdomain.com(或编写一个php脚本并调用gethostbyname),看看php是否可以从给定的主机名中找到正确的IP地址。

如果您从上一步获得的IP地址与您尝试的IP地址不同,请尝试解决DNS解析问题,或者在托管您的php应用程序的计算机上编辑/etc/hosts文件,并将testdomain.com指向正确的IP地址。某些服务器可能有多个IP地址绑定到它们,但MySQL服务器只侦听其中一个,检查机器上的/etc/mysql/my.cnf是否存在MySQL服务器并查找bind 1.2.3.4(或其他主机名/ IP地址) )。如果您还不知道,MySQL服务器默认只接受来自localhost的连接。

如果您的MySQL服务器配置为侦听特定主机名/ IP地址,请尝试绑定到0.0.0.0,以便您的MySQL服务器允许来自所有源的连接。也可能有防火墙阻止来自其他来源的连接。 Here's how to check firewall configuration on CentOS.

如果您的php脚本可以解析testdomain.com,请尝试使用mysql命令行客户端从托管您的php应用程序的计算机连接到您的数据库。 mysql -h testdomain.com -u uname -p。命令行客户端可以为您提供有关连接失败原因的更多信息。

我不确定您是否使用托管的VPS服务(例如Amazon EC2),或者您拥有自己的服务器计算机,但Amazon EC2确实提供了开箱即用的防火墙,它是'被称为"安全组"。登录您的EC2控制台,然后单击"安全组"在左侧面板上,您可以在右侧面板上编辑防火墙设置。

相关问题