尝试连接到我的数据库服务器时,遇到未知主机的问题:
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 网站托管公司。
答案 0 :(得分:22)
通常情况下,名称解析在主机上不起作用。如果您的连接目标始终相同,则可能需要使用其IP地址进行连接。
答案 1 :(得分:7)
如果您使用此代码:
$Mysqli= new mysqli('mysql2.servidoreswindows.net:3306',
'usu', 'pass', 'dbname');
您可以尝试编写没有端口的主机
那是:
$Mysqli= new mysqli('mysql2.servidoreswindows.net', 'usu', 'pass', 'dbname');
答案 2 :(得分:7)
请关注AWS安全组:
在我的情况下,我可以从我的计算机连接到RDS抛出Telnet和 我可以连接抛出Mysql Workbench但我无法连接 我的EC2实例与RDS位于同一个VPC中。
解决方案是:
1.我为RDS创建了一个安全组(例如)并分配给它
2.我为EC2创建了一个安全组(例如)并分配给它
我也将RDS安全组(例如)分配给EC2。的<<这节省了我。
信息:如果您的EC2已分配了2个或更多安全组,则在RDS安全组中,入站源必须创建规则,因为许多安全组都已分配了EC2。
亚马逊文档说:
VPC中的EC2实例与数据库实例共享相同的 VPC安全组。 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html
我整天都在搜索文档 我希望这能帮到你。
答案 3 :(得分:2)
我知道这是一个老问题。但是今天我遇到了同样的问题,我找到的答案都不是正确的。
我的案例中的问题最终是我们的防火墙上没有打开端口3306,我试图从外部服务器连接到内部mysql数据库。
我不确定为什么它给你的错误是“Unknown Host”。我本来期待更像“无法连接”的东西。或“连接被拒绝。”,但使用内部服务器完全相同的代码工作正常,导致我得出这个结论。
答案 4 :(得分:0)
确保您不包含“http://”部分。我在http://example.com
文件中使用了.env
。当我把它作为example.com
离开时,它起作用了。