最近工作上在开发一个框架,最后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即可,如下图所示:

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