Mysql 8.0 1251 client does no support authentic的错误解决方式

本文介绍了如何解决MySQL中用户密码不匹配的问题,包括检查用户信息、修改用户密码的方法,并提供了具体的SQL命令。

报错弹框:

mysqlclient命令:

USE mysql; 
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘mysql’; 
FLUSH PRIVILEGES;

解决方式:

1.查看用户信息

select host,user,plugin,authentication_string from mysql.user;

插入截图: 

 

备注: host为 % 表示不限制ip    localhost表示本机使用    plugin非mysql_native_password 则需要修改密码。

修改用户密码:

更新user为root,host为% 的密码为 mysql

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'mysql';

更新user为root,host为localhost 的密码为mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysql;

处理结果: 

最终: 

 

### 问题分析 云服务器上 MySQL 连接出现 `'caching_sha2_password'` 插件无法加载的问题,通常与 MySQL 客户端和服务器之间的认证插件不兼容有关。MySQL 8.0 引入了新的默认身份验证插件 `caching_sha2_password`,而某些旧版客户端可能不支持此插件。 --- ### 解决方案 #### 方法一:修改用户的身份验证插件为 `mysql_native_password` 通过将用户的认证方式从 `caching_sha2_password` 更改为 `mysql_native_password`,可以解决兼容性问题。 1. **登录 MySQL** 使用命令行工具登录到 MySQL 数据库: ```bash mysql -u root -p ``` 2. **修改用户的身份验证插件** 执行以下 SQL 命令,将用户的身份验证插件更改为 `mysql_native_password`: ```sql ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES; ``` 注意:如果是在本地连接,可以将 `'%'` 替换为 `'localhost'`[^2]。 3. **验证更改** 确认用户的认证插件已更改: ```sql SELECT user, host, plugin FROM mysql.user; ``` 4. **重启 MySQL 服务** 在云服务器上重启 MySQL 服务以应用更改: ```bash sudo systemctl restart mysql ``` --- #### 方法二:升级客户端驱动 如果不想更改服务器端的配置,可以选择升级客户端(如 Navicat、Workbench 等)或安装支持 `caching_sha2_password` 的驱动程序。 - 对于 Navicat 用户,确保使用的是最新版本,并安装适用于 MySQL 8.0 的 JDBC 驱动。 - 对于其他编程语言(如 Python),更新相应的数据库连接库。例如: ```bash pip install mysql-connector-python --upgrade ``` --- #### 方法三:跳过密码验证(仅限紧急情况) 在特殊情况下,可以通过跳过密码验证的方式临时访问数据库。但这种方法存在安全隐患,仅建议在调试或紧急恢复时使用。 1. **停止 MySQL 服务**: ```bash sudo systemctl stop mysql ``` 2. **以跳过权限表的方式启动 MySQL**: ```bash sudo mysqld_safe --skip-grant-tables & ``` 3. **登录 MySQL 并修改用户配置**: ```sql USE mysql; UPDATE user SET plugin='mysql_native_password' WHERE User='root'; FLUSH PRIVILEGES; ``` 4. **重启 MySQL 服务**: ```bash sudo systemctl restart mysql ``` --- ### 注意事项 - 修改身份验证插件可能会影响安全性,请根据实际需求选择合适的解决方案。 - 如果云服务器上的 MySQL 是托管服务(如 AWS RDS 或阿里云 RDS),需要检查托管服务是否支持自定义身份验证插件。部分托管服务可能限制直接修改用户配置。 --- ### 示例代码 以下是完整的 SQL 脚本示例,用于将用户的身份验证插件更改为 `mysql_native_password`: ```sql ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值