问题分析错误代码 1251 表示客户端尝试连接 MySQL 8 服务器时,使用的身份验证插件不被支持。这是由于 MySQL 8 默认使用了 caching_sha2_password 身份验证插件,而一些旧版客户端(如 Navicat 的某些版本)可能不支持该插件。

解决方案方法 1:

修改 MySQL 用户的身份验证插件你可以将 root 用户或其他目标用户的身份验证插件从 caching_sha2_password 修改为 mysql_native_password,以兼容 Navicat 等客户端。
1. 登录 MySQL 使用命令行登录到 MySQL:mysql -u root -p

2. 查看当前用户的身份验证插件 执行以下命令,检查用户的认证插件:

SELECT , host, plugin FROM mysql.;

3. 修改认证插件 将 root 用户的认证插件改为 mysql_native_password:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

4. 刷新权限 执行以下命令以确保更改生效:FLUSH PRIVILEGES;

5. 重新测试连接 使用 Navicat 测试连接,应该可以正常连接。


方法 2:升级 Navicat 客户端如果可能,建议升级 Navicat 到最新版本。较新的 Navicat 版本已经支持 caching_sha2_password 插件,无需修改 MySQL 配置

方法 3:修改 MySQL 配置文件如果你希望全局禁用 caching_sha2_password 插件并默认使用 mysql_native_password,可以修改 MySQL 配置文件。
1. 编辑 MySQL 配置文件 打开 MySQL 配置文件(通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf):

sudo nano /etc/my.cnf

2. 添加配置 在 [mysqld] 部分添加以下内容:

default_authentication_plugin=mysql_native_password

3. 重启 MySQL 服务 保存文件后,重启 MySQL 服务以应用更改:

sudo systemctl restart mysqld

4. 重新创建用户(可选) 如果需要,可以重新创建用户以使用新的默认插件:

CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

注意事项
1. 安全性:mysql_native_password 是一种较老的认证方式,虽然兼容性更好,但安全性不如 caching_sha2_password。如果可能,建议优先升级客户端。
2. 远程访问:如果你需要从远程主机连接 MySQL,请确保防火墙允许 MySQL 端口(默认 3306),并且用户具有远程访问权限(例如 'root'@'%')。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐