一尘不染

启用远程MySQL连接:错误1045(28000):用户被拒绝访问

mysql

在Windows XP上运行的MySQL 5.1.31。

本地 MySQL服务器(192.168.233.142),我可以以root用户身份进行如下连接:

>mysql --host=192.168.233.142 --user=root --password=redacted

远程 计算机(192.168.233.163),我可以看到mysql端口已打开:

# telnet 192.168.233.142 3306
Trying 192.168.233.142...
Connected to 192.168.233.142 (192.168.233.142).

但是,当尝试从 远程 计算机连接到mysql时,我收到:

# mysql --host=192.168.233.142 --user=root --password=redacted
ERROR 1045 (28000): Access denied for user 'root'@'192.168.233.163' (using password: YES)

我在mysql.user中只有2个条目:

Host         User     Password
--------------------------------------
localhost    root     *blahblahblah
%            root     [same as above]

我还需要做些什么才能启用远程访问?

编辑

正如下面Paulo所建议的那样,我尝试用IP专用条目替换%的mysql.user条目,因此我的用户表如下所示:

Host             User     Password
------------------------------------------
localhost        root     *blahblahblah
192.168.233.163  root     [same as above]

然后,我重新启动了计算机,但问题仍然存在。


阅读 522

收藏
2020-05-17

共1个答案

一尘不染

Paulo的帮助使我找到了解决方案。它是以下各项的组合:

  • 密码包含美元符号
  • 我试图从Linux Shell连接

bash外壳将美元符号视为扩展为环境变量的特殊字符,因此我们需要使用反斜杠对其进行转义。顺便说一句,在美元符号是密码的最后一个字符的情况下,我们
不必这样做

例如,如果您的密码是“ pas $ word”,那么在Linux bash中,我们必须进行如下连接:

# mysql --host=192.168.233.142 --user=root --password=pas\$word
2020-05-17