项目环境信息:
系统:window server2012
mysql版本:8.0.30
问题描述
mysql安装成功,创建用户后,使用远程连接工具navicat连接失败。
原因分析:
查询用户信息
连接数据库,查询用户信息
C:\Users\ADMIN>mysql -uroot -p
mysql>select user,host,plugin from mysql.user;
查询结果:

连接用户的host为%而非locahost,说明可以使用远程连接。问题原因:*
据相关资料搜索,mysql8.0版本以后加密方式改为caching_sha2_password,而远程连接工具版本较低导致连接不成功。
注:mysql身份验证插件类型
- mysql_native_password(MySQL 5.7版本)
- caching_sha2_password(MySQL 8.0版本)
解决方案:
修改mysql的用户默认加密规则
修改安装路径下的my.ini配置文件,将下图中加密规则改为 authentication_policy=mysql_native_password,,

重新创建用户或者修改原用户的加密规则后,可使用远程工具连接mysql。
alter user '{用户名}'@'{主机地址}' identified with {身份验证插件类型} by '{新密码}';
注1:如找不到my.ini配置文件,在此电脑-查看中勾上隐藏的项目,便可在C盘C:\ProgramData\MySQL\MySQL Server 8.0中找到my.ini文件(mysql默认安装场景下)。
注2:如提示无权限修改,可在程序中找到文本文件,右键以管理员身份运行,打开文件,就可以有权限正常修改文件了。

在Windows Server 2012环境下,使用MySQL 8.0.30时遇到远程连接工具如Navicat连接失败的问题。原因可能在于MySQL 8.0版本后加密方式变为caching_sha2_password,与低版本远程工具不兼容。解决方案包括修改my.ini配置文件,将身份验证插件类型改为mysql_native_password,或者重新创建/修改用户以兼容远程连接。
710





