【问题标题】:PHP MySql unknown server host [duplicate]PHP MySql未知服务器主机[重复]
【发布时间】:2014-08-04 17:18:12
【问题描述】:

我正在运行带有 MySQL 5.5.38 和 PHP 5.3.10 的 Ubuntu 12.04.4 LTS,使用 Webmin 1.680(尽管我也使用终端进行管理)。我在一个动态 IP 上,所以我一直在使用 dyndns 来托管一个网站,该网站一直运行良好。我想扩展我的网站以访问 mysql 数据库。我正在尝试使用 PHP 连接到 mysql,特别是我使用 Webmin 设置的特定数据库。但是,我不断收到错误消息:

“未知的 MySQL 服务器主机 '127.0.0.1:3306'”

我已经检查了 mysql 配置,它被设置为那个 IP 和端口。我还检查了我的服务器主机,该 IP 是本地主机。我的路由器设置为将端口 3306 转发到我的服务器。无论我是本地连接还是远程连接,都会发生这种情况。我正在使用以下 PHP 字符串进行连接:

$link = mysqli_connect("127.0.0.1:3306", "username", "password", "dbname");

我在我的任务中找到的解决方案不起作用...将连接字符串中的主机更改为“localhost:3306”或我的 dyndns 主机名“XYZ.dyndns.org:3306”,或更改为我的服务器的本地 IP - 并更改 mysql 绑定地址以匹配。我尝试在配置文件中注释掉绑定地址。我在这个论坛和其他论坛上发现了类似的问题,但没有一个适合我的解决方案。我是数据库新手,但对使用 PHP 操作它们进行了大量研究,但我无法克服这个连接错误。我一直在自学如何运行服务器,并且能够自己解决每一个问题,直到这个问题。我可以从我服务器上的终端登录到 mysql,但执行“显示数据库”命令它不会列出我通过 webmin 创建的数据库,即使我是用户可以完全访问/控制该数据库。

【问题讨论】:

  • 我必须赞扬您的帖子,因为您很好地解释了自己。虽然我对 Ubuntu 服务器并不完全熟悉,但我过去在我的 Windows 计算机上使用过 XAMPP。我总是忽略端口。如果您在本地运行服务器,则不需要端口转发。您也可以尝试用localhost 代替127.0.0.1
  • 你收到任何错误消息
  • 你能登录 MySQL 并提供SHOW GRANTS \G 的输出(你应该删除密码哈希)吗?
  • 我将端口从主机移动到末尾,如下面的答案所示,我的用户名@localhost 的访问被拒绝。应该注意我正在为我的服务器使用基本身份验证,并且它似乎使用了我的用户名,而不是我在连接字符串中放入的 mysql 用户名。我在 mysql 中创建了一个与我的登录用户名和密码相同的用户,但仍然被拒绝。
  • 对不起.. 'SHOW GRANTS \G 的输出是 GRANT USAGE ON . TO ''@'localhost''

标签: php mysql ubuntu-12.04 webmin dyndns


【解决方案1】:

当我开始使用 mysqli 时,我遇到了类似的问题。如果您需要包含端口,它在mysqli_connect 中有自己的位置。

$link = mysqli_connect("127.0.0.1", "username", "password", "dbname", 3306);

应该更适合你。但我相信 3306 是默认端口,所以您可以不使用它。

【讨论】:

  • 感谢您的回复!它似乎让我更接近了,我不再收到主机错误,而是被用户@localhost 拒绝访问(使用密码是)
  • 谢谢大家!我能够为我的用户授予权限,现在一切正常!感谢所有帮助!
猜你喜欢
  • 2011-12-30
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 2018-08-30
  • 2022-08-22
相关资源
最近更新 更多