通过终端连接远程MySQL

10

为了测试,我设置了一个具有 % 访问权限的 mysql 用户。当我尝试从远程机器连接时,会出现以下情况:

输入密码:

然后立即得到以下错误信息:

错误 2003 (HY000):无法连接到 'xxxxxxx' 上的 MySQL 服务器(1)

有什么想法吗?

3个回答

18

请验证您是否可以从远程机器使用telnet连接到MySQL端口,例如:

telnet 192.168.1.52 3306

如果尝试后仍然无法连接,那么有防火墙阻止你的连接,或者你在不同于默认端口(3306)上运行mysql,或者mysql没有配置为监听接口/ IP地址(也许只配置为监听本地主机的连接,请检查my.cnf配置文件中的bind-address配置)。


尝试注释绑定。无法 Telnet,必须是防火墙问题,它在 3306 端口。谢谢。 - rd42
这个问题中,一个空白的 Telnet 屏幕算作成功吗?还是我应该看到一些输出? - adam.baker
@Marvin,这是因为你试图在不应该运行它的地方运行此命令。你需要在Linux shell、OSX shell或Windows命令终端中运行它。- 或者是因为你在某个地方打错了字。 - nos
@nos 不用在意,我已经发现 Telnet 客户端没有被使用,我需要在设置中启用它(我从另一个 SO 问题中找到了这个)。现在它给我很多奇怪的字符。 - Marvin
这是它显示的内容:5.6.39-cll-lveΘkDE4us`faÇsq][3+|TmId:mysql_native_password - Marvin
1
看起来很合理。你从MySQL得到了响应,因此可以得出结论,没有防火墙阻止访问。 - nos

3

尝试在/etc/mysql/my.cnf中注释掉bind-address = 127.0.0.1

# security:
# using "localhost" in connects uses sockets by default
# skip-networking
# bind-address = 127.0.0.1  --- commented

观察结果。如果不起作用,请尝试使用IP地址,如果仍然无法正常工作,请回滚原始文件。


3

您能telnet到MySQL端口3306吗?如果不能,请检查MySQL服务器服务是否在该端口上侦听。打开命令提示符并输入以下示例。 示例:telnet yourmysqlservername.com 3306


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接