通过SSH隧道连接时MySQL访问被拒绝错误

在MySQL中,该localhost关键字保留给使用MySQL套接字的连接,你应该使用ip-address127.0.0.1来实现与127.0.0.1上的MySQL网络端口的TCP连接。这意味着服务器必须同时从专门向用户授予特权127.0.0.1并且客户端必须使用-h 127.0.0.1来通过隧道而不是连接到本地套接字。

要允许你使用SSH端口转发进行访问,你需要以下内容:

GRANT SELECT ON *.* TO user@`127.0.0.1`

然后运行

FLUSH PRIVILEGES;

并且可能

FLUSH QUERY CACHE;

如果仍然不起作用,请重新启动服务器进程。

在反向DNS查找后,错误消息127.0.0.1中的内容会转换为localhost调试困难。

手册所述:

在Unix上,MySQL程序对主机名localhost进行特殊处理,与其他基于网络的程序相比,它可能与你期望的不同。为了连接到localhost,MySQL程序尝试使用Unix套接字文件连接到本地服务器。即使给定了--port-P选项来指定端口号,也会发生这种情况为确保客户端与本地服务器建立TCP / IP连接,请使用--host-h将主机名值指定为127.0.0.1,或者使用本地服务器的IP地址或名称。你还可以通过使用该--protocol=TCP选项来显式指定连接协议,即使是本地主机也是如此例如:

shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP

--protocol选项使你可以建立特定类型的连接,即使其他选项通常默认为某些其他协议也是如此。

posted @ 2022-08-16 09:38  mofy  阅读(777)  评论(0编辑  收藏  举报