0

我正在尝试将 MySql Server 从我的机器连接到服务器,以供开发使用。在服务器中,MySql 运行正常,但我无法远程连接它。

我已经检查了 my.cnf 删除了“skip-networking”行。在服务器中,bin/mysqladmin 变量返回:

 bin/mysqladmin version -u root -pPASSWORD
bin/mysqladmin  Ver 8.42 Distrib 5.5.27, for linux2.6 on x86_64
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version          5.5.27-log
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /tmp/mysql.sock
Uptime:                 5 min 55 sec

Threads: 1  Questions: 1  Slow queries: 0  Opens: 33  Flush tables: 1  Open tables: 26  Queries per second avg: 0.002
  • 服务器:SuSe Linux
  • 客户端:Windows 7
  • MySql:根据上面的信息。

会发生什么?谢谢!

4

3 回答 3

3

连接到远程数据库需要做三件事:

  1. 在防火墙上打开端口 3306。服务器和客户端的防火墙必须打开 3306 端口!
  2. 在 my.cnfbind-address = 0.0.0.0中让 mysql 绑定到所有接口
  3. 数据库中有足够的权限以允许远程连接

如果你不能 telnet 到远程机器,忘记规则 3。

于 2012-09-10T19:31:54.683 回答
2

如果您无法使用 MySQL 客户端连接,我建议您正在连接的用户不允许远程连接。这是必须明确授予的权利(尽管我读过的大多数入门教程都显示创建可以从任何机器访问的用户......这为安全风险打开了大门)。

例子:

如果您遵循MySQL 文档并执行以下操作:

创建用户“杰弗里”@“本地主机”;

用户jeffrey只能从 localhost 登录。

但是,由于您声明无法使用 Telnet 进行连接,因此我会质疑 “PS:不是防火墙”的说法。

多个防火墙会影响通信路径。

  • Windows 7:如果您当前的网络恰好被定义为公共网络,则默认情况下会阻止大多数出站端口
  • 服务器防火墙。不确定您在服务器本身上运行什么(如果有的话),但请确保并检查该连接。
  • ISP/数据中心防火墙。许多服务器位于数据中心级别的防火墙后面。例如,对于 AWS,您必须允许通过安全策略进行访问。在 Rackspace,您必须使用他们的工具打开防火墙端口。

确保您了解所有可能涉及的防火墙。

@JvdBerg 的建议也是一个不错的建议,以确保您正在监听所有接口

在 my.cnf bind=0.0.0.0 让mysql绑定到所有

于 2012-09-10T19:34:08.470 回答
1

老实说,我对 Telnet 没有太多经验。但是,我必须补充一点,您最好的选择是使用 ssh,因为 Telnet 非常不安全。基本上,您的所有登录信息都将以明文形式发送,如果恶意用户正在嗅探您的网络...

Windows 上有用于 ssh 的开源程序,例如 PuTTY。

针对您的问题,

必须在两台机器上打开端口 3306。并且您的数据库必须配置为接受/允许远程连接。

于 2012-09-10T19:35:53.557 回答