我在远程主机上使用mysqli进行测试运行,使用IP地址工作正常,但不能使用完全限定的域名。 DNS已正确映射,我可以使用浏览器浏览页面并ping成功
$ mysqli = new mysqli(" www.testdomain.com"," uname"," passwd"," database");
有什么建议吗? mysql正在Centos 6上运行
答案 0 :(得分:0)
首先,除非您有特殊原因需要在www.
之前添加testdomain.com
(例如,testdomain.com
和www.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控制台,然后单击"安全组"在左侧面板上,您可以在右侧面板上编辑防火墙设置。