当尝试连接到我的数据库服务器时,我遇到了未知主机的问题:
Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2005): Unknown MySQL server host 'xxxxxxxxxxxxx:port' in index.php on line 18
第18行是我尝试请求连接MySQL服务器:
$this->db = new mysqli($db_host, $db_user, $db_psw, $db_name);
我在 1&1 网站托管公司托管我的数据库。
5条答案
按热度按时间x8diyxa71#
这通常是名称解析在主机上不起作用的情况。如果您的连接目标始终相同,您可能希望使用其IP地址进行连接。
vktxenjb2#
如果您使用此代码:
您可以尝试写入没有端口的主机
即:
gfttwv5a3#
在我的例子中,我可以通过Telnet从我的计算机连接到RDS,也可以通过Mysql Workbench连接,但我不能从与RDS位于同一VPC中的EC2示例连接。
解决方案是:
1.我已经为RDS创建了一个安全组(exampl1),并将其分配给了该安全组。
1.我已经为EC2创建了一个安全组(exampl2),并将其分配给该安全组。
而且我还将RDS安全组(示例1)分配给了EC2。〈〈这让我省了不少力气。
信息:如果您的EC2已分配2个或更多安全组,则在RDS安全组中,入站源必须创建与分配给您的EC2的安全组数量相同的规则。
亚马逊文档说:
VPC中的EC2示例与DB示例共享相同的VPC安全组。http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html
2admgd594#
我知道这是个老问题,但我今天遇到了同样的问题,我找到的答案都不对。
在我的例子中,问题是端口3306在防火墙上没有打开,我试图从外部服务器连接到内部MySQL数据库。
我不知道为什么它给你的错误是“未知主机”在这种情况下。我本来以为更像“无法连接。”或“连接拒绝。",但使用完全相同的代码从内部服务器工作正常,使我得出这个结论。
inb24sb25#
确保你没有包含“http://”部分。我在我的
.env
文件中使用http://example.com
。当我把它保留为example.com
时,它工作了。