无法连接到远程MySQL服务器

时间:2010-09-10 16:03:59

标签: mysql

我有一台服务器试图连接到本地网络外部托管的MySQL数据库。我正在尝试使用公共IP地址连接到它。

在命令行中测试连接会给我这个错误:

ERROR 2003 (HY000): Can't connect to MySQL server on '[ip_address]' (146)

PDO给了我同样的错误。在任何情况下,连接都可以在本地和同一网络中正常工作,这令我难以理解。

MySQL服务器已修改其绑定地址,因此它接受远程连接。 MySQL服务器还有一个具有适当权限的用户。但无论如何,看起来我甚至无法在第一时间开始连接。

我是否需要添加my.cnf值以让MySQL接受来自本地网络外部的请求?

感谢。

5 个答案:

答案 0 :(得分:4)

要检查的事项:

  1. MySQL正在监听公共IP(听起来像你已经完成)
  2. MySQL正在侦听标准端口/您正在连接它正在侦听的同一端口。
  3. 远程计算机上是否运行了防火墙? (它们通常在发行版中打包标准)防火墙是否配置为允许连接到该端口?
  4. 如果远程计算机位于另一个网络中,是否在您的连接和终端计算机之间进行了网络地址转换(NAT) - 如果是,则将其配置为允许MySQL端口通过。
  5. my.cnf文件是否配置为允许来自localhost 127.0.0.1 IP以外的任何其他连接 - 尽管您更有可能获得拒绝访问的响应,而不是无法连接。

答案 1 :(得分:2)

从该特定主机向用户授予权限。或者从任何主机访问它使用%(即外卡)作为主机。

答案 2 :(得分:1)

听起来好像客户端无法连接。此页面提供了有关如何缩小问题范围的一些建议:

http://dev.mysql.com/doc/refman/5.1/en/can-not-connect-to-server.html

如果您尝试telnet到服务器上的端口3306会发生什么?你应该从MySQL得到一个提示。

答案 3 :(得分:0)

使用命令

为所有用户授予权限

上授予所有权限。根目录' @' localhost'通过' root'识别WITH GRANT OPTION; 在上授予所有特权。以及' root' @'%'通过' root'识别WITH GRANT OPTION; FLUSH PRIVILEGES;

现在去你的" my.cnf"文件。对于ubuntu使用(sudo find / -type f -name" my.cnf")

注释掉" bind-address = 127.0.0.1"

使用for ubuntu重新启动mysql" sudo service mysql restart"

答案 4 :(得分:0)

我遇到了同样的问题,给出的大多数解决方案是:

  1. 更改配置文件以允许端口/地址
  2. 允许程序/端口通过防火墙
  3. 检查远程连接的IP / URL

但是在我的情况下,数据库托管在远程服务器上,而路由器需要端口转发。

  1. 转到路由器设置(打开浏览器并输入192.168.0.1或类似名称)
  2. 输入凭据(主要是admin / admin或admin / password)
  3. 在菜单中找到“转发”或“端口转发”
  4. 创建新条目(在我的情况下,我使用的是postgres,因此5432端口带有TCP)