【问题标题】:mysql_connect() failed - Error (4)mysql_connect() 失败 - 错误 (4)
【发布时间】:2013-10-12 17:39:48
【问题描述】:

我开发了一个带有 MySQL 和 node.js 实现的 PHP 应用程序。 我正在尝试连接到我的生产数据库,如下所示:

mysql_connect('54.212.117.38', 'root', '********');

这是我得到的错误:

Could not connect: Can't connect to MySQL server on '54.212.117.38' (4)

不得不提的是,我可以通过浏览器直接访问PHPmyAdmin。

此外,在本地主机上,应用程序可以毫无问题地连接到 MySQL。 我还尝试重新启动 Apache 服务器,关闭 Node.js 程序...

顺便说一句 - 我的生产服务器正在运行 Ubuntu。

有没有人知道它不起作用的原因是什么?

【问题讨论】:

  • 很可能,MySQL 被配置为仅侦听 localhost 连接(如果数据库主机直接连接到 Internet,这通常是个好主意)
  • 主要连接使用 localhost 而不是 ip
  • 非常感谢,你帮了我很多,我刚改成 localhost,一切正常。
  • 尽管在我从事的其他项目中我需要使用确切的 IP,并且使用 localhost 不起作用,但我真的不明白为什么..

标签: php mysql sql


【解决方案1】:

有不止一种可能。一些建议:

  • 确保此 IP 地址后面的 mysql 服务器正在运行并接受连接。
  • 确保用户可以从您的客户端 IP 访问。
  • 检查连接过程是否耗时过长(在这种情况下,您可以尝试增加 connect_timeout)。
  • 如果没有其他帮助,请跟踪客户端和服务器之间的流量。也许防火墙有点过于激进(我曾经遇到过,用户 root 正在触发 IDS 规则......)。

附注,mysql 扩展自 PHP 5.5.0 起已弃用,并将在未来删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。

【讨论】:

  • 还有一点很重要:从mysql_connect()切换到
【解决方案2】:

问题在于防火墙规则。

当您通过 Phpmyadmin 连接时,您是通过 Web 界面进行连接,而 Phpmyadmin 在内部连接到 localhost。

  1. 检查您的本地 ip 或您要连接的服务器的 ip。
  2. 确保将参数绑定地址更改为: 绑定地址 = 0.0.0.0 = 0.0.0.0

【讨论】:

  • 不,抱歉。建议有人打开 M​​ySQL 访问整个 Internet 并不是一个好主意。如今,人们应该使用 SSH 隧道或生产数据库的本地副本,但绝不应该使用可公开访问的数据库实例
猜你喜欢
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
  • 2018-10-07
  • 2012-11-02
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
相关资源
最近更新 更多