mysqli 通过 IP 地址连接但不使用主机名
mysqli connect via IP address but not using host name
我在远程主机上用 mysqli 测试了 运行,使用 IP 地址工作正常,但不能使用完全限定的域名。
DNS 已正确映射,我可以使用浏览器浏览页面并 ping 也成功
$mysqli = new mysqli("www.testdomain.com", "uname", "passwd", "database");
有什么建议吗?
mysql 在 Centos 6 上 运行ning
首先,除非你有特殊原因必须在testdomain.com
之前添加www.
(例如,testdomain.com
和www.testdomain.com
指向不同的地址) ,请在您的主机名中去掉 www.
后重试。
在托管您的 php 应用程序的机器上尝试 nslookup testdomain.com
(或编写 php 脚本并调用 gethostbyname),看看 php 是否可以从给定的主机名中找到正确的 IP 地址。
如果您从上一步获得的 IP 地址与您尝试的不同,请尝试解决 DNS 解析问题,或在托管您的 php 应用程序的计算机上编辑 /etc/hosts
文件,并指向 testdomain.com 以更正 IP 地址。某些服务器可能绑定了多个 IP 地址,但 MySQL 服务器只监听其中一个,检查 /etc/mysql/my.cnf
主机上的 MySQL 服务器并查找 bind 1.2.3.4
(或其他主机 name/IP 地址)。如果您还不知道,MySQL 服务器默认只接受来自本地主机的连接。
如果您的 MySQL 服务器配置为侦听特定主机 name/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 确实提供开箱即用的防火墙,它被称为"Security Group"。登录到您的 EC2 控制台,然后单击左侧面板上的 "Security Group",然后您可以在右侧面板上编辑防火墙设置。
我在远程主机上用 mysqli 测试了 运行,使用 IP 地址工作正常,但不能使用完全限定的域名。 DNS 已正确映射,我可以使用浏览器浏览页面并 ping 也成功
$mysqli = new mysqli("www.testdomain.com", "uname", "passwd", "database");
有什么建议吗? mysql 在 Centos 6 上 运行ning
首先,除非你有特殊原因必须在testdomain.com
之前添加www.
(例如,testdomain.com
和www.testdomain.com
指向不同的地址) ,请在您的主机名中去掉 www.
后重试。
在托管您的 php 应用程序的机器上尝试 nslookup testdomain.com
(或编写 php 脚本并调用 gethostbyname),看看 php 是否可以从给定的主机名中找到正确的 IP 地址。
如果您从上一步获得的 IP 地址与您尝试的不同,请尝试解决 DNS 解析问题,或在托管您的 php 应用程序的计算机上编辑 /etc/hosts
文件,并指向 testdomain.com 以更正 IP 地址。某些服务器可能绑定了多个 IP 地址,但 MySQL 服务器只监听其中一个,检查 /etc/mysql/my.cnf
主机上的 MySQL 服务器并查找 bind 1.2.3.4
(或其他主机 name/IP 地址)。如果您还不知道,MySQL 服务器默认只接受来自本地主机的连接。
如果您的 MySQL 服务器配置为侦听特定主机 name/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 确实提供开箱即用的防火墙,它被称为"Security Group"。登录到您的 EC2 控制台,然后单击左侧面板上的 "Security Group",然后您可以在右侧面板上编辑防火墙设置。