mac上安装mysql8.0远端客户端无法连接

最近工作上在开发一个框架,最后sample工程调试需要连接数据库,为了快速本地测试所以就本机mac笔记本电脑快速装了一个mysql(8.0.28)用于远程连接,但是开发机服务上配置mysql的信息后就是连接不上,后续经过排查和处理发现mysql8.0新版本和之前老版本还是有好多的差异,现将处理过程记录如下。

安装过程就省略,直接说明问题处理:

远程连接不上,无法访问

  • 发现mac本机上客户端可以正常使用root用户通过host:localhost来进行连接,但是远程的无法连接
1
2
3
4
5
6
7
8
9
10
11
cd /usr/local/ect/
vi my.cnf

# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0

把上面配置127.0.0.1 --> 0.0.0.0
当然生产上都不能这样改,这里就只是为了本地测试可以做这样修改快速解决连接问题,这样就可以允许远程客户端可以进行连接

修改后发现仍然提示连接错误,说不允许进行连接

然后进入mysql:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mysql -uroot -p
输入密码进入mysql命令行

use mysql

select host,user from user;

+-----------+------------------+
| Host | User |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
4 rows in set (0.00 sec)

发现root用户对应主机配置信息Host是localhost

所以对应修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
修改Host为通配符%
Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1。这里的意思就是说root用户只能通过192.168.1.1的客户端去访问。
user=root Host=localhost,表示只能通过本机客户端去访问。
而%是个通配符 ,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果 Host=% ,表示所有IP都有连接权限。
注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产,由于我们需要远程连接数据库,将其暂时设置为%
环境的IP进行设置。
Host设置了“%”后便可以允许远程访问。
Host修改完成后记得执行
flush privileges
使配置立即生效:
use mysql;
select Host,User from user;
update user set host = '%' where user ='root';

  • 修改完之后又出现当连接MySQL时报错“plugin caching_sha2_password could not be loaded”

配置新连接报错:错误号码 2058,分析是 mysql 密码加密方法变了。

MySQL新版默认使用caching_sha2_password作为身份验证插件,而旧版是使用mysql_native_password,当连接MySQL时报错“plugin caching_sha2_password could not be loaded”时,可换回旧版插件。

解决如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
进入mysql的命令行

use mysql

select Host,User,plugin from mysql.user;

+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | root | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
+-----------+------------------+-----------------------+
4 rows in set (0.00 sec)

需要把root用户的caching_sha2_password插件修改为mysql_native_password

alter user root@'%' identified with mysql_native_password by '123456';
flush privileges;

然后再试,发现远程客户端可以连接了

其它报错

  • DBeaver出现“Public Key Retrieval is not allowed”错误的解决办法

上面修改好后,发现mac本机适用DBeaver工具连接数据库会出现以上报错

解决办法:

在驱动属性中,将“allowPublicKeyRetrieval”设置为true即可,如下图所示:

M39Qff

修改完后,马上都可以连接了