远程连接数据库 出现 Client does not support authentication protocol requested by server的解决方法

本文介绍了如何在Ubuntu 20.04环境下,由于MySQL新加密方式导致的Navicat远程连接问题,通过修改用户密码策略,将caching_sha2_password更改为mysql_native_password来解决,包括操作步骤和必要命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统环境

阿里云主机。
Ubuntu:20.04
MySQL。

情况

想用 navicat 远程连接 MySQL 服务器,但是出现了 Client does not support authentication protocol requested by server。
问题的原因是使用了新的加密方式导致。

解决方法:修改 MySQL 的密码方式

进入 MySQL

mysql -uroot -p

选择 mysql 表

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select user,host,plugin from user where user='zhouyi';
+--------+------+-----------------------+
| user   | host | plugin                |
+--------+------+-----------------------+
| zhouyi | %    | caching_sha2_password |
+--------+------+-----------------------+
1 row in set (0.00 sec)

如上所示,使用 caching_sha_password。

更改

mysql> alter user 'zhouyi'@'%' identified by '这里是你的密码' password expire never;
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host,plugin from user where user='zhouyi';
+--------+------+-----------------------+
| user   | host | plugin                |
+--------+------+-----------------------+
| zhouyi | %    | caching_sha2_password |
+--------+------+-----------------------+
1 row in set (0.00 sec)

mysql> alter user 'zhouyi'@'%' identified with mysql_native_password by '这里是你的密码';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> select user,host,plugin from user where user='zhouyi';
+--------+------+-----------------------+
| user   | host | plugin                |
+--------+------+-----------------------+
| zhouyi | %    | mysql_native_password |
+--------+------+-----------------------+
1 row in set (0.00 sec)

如上所示,密码改为了 native_password。
这样问题解决。

### 解决 Mac 上 Node.js 连接 MySQL 数据库时遇到的 "Client does not support authentication protocol" 错误 当尝试通过 Node.js 应用程序连接到本地 MySQL 数据库并收到错误 `Client does not support authentication protocol requested by server` 时,这通常是因为服务器配置了较新的身份验证插件(如 `caching_sha2_password`),而旧版本的 MySQL 客户端可能无法处理这种类型的加密方式。 #### 方法一:更改默认的身份验证方法为更兼容的形式 可以通过修改 MySQL 用户账户使用的密码哈希算法来解决问题。具体操作如下: 进入命令行工具后登录至 MySQL 控制台: ```bash mysql -u root -p ``` 执行 SQL 命令更新用户的认证方式为 `mysql_native_password` 并重置其密码: ```sql ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; FLUSH PRIVILEGES; ``` 上述语句中的 `'your_username'` 和 `'new_password'` 需要替换为实际存在的用户名以及想要设置的新密码[^1]。 #### 方法二:升级 MySQL Connector/Node.js 或者整个 MySQL Server 版本 如果不想改变现有的安全策略,则可以考虑将应用程序依赖项中涉及的所有 MySQL 组件都更新到最新稳定版。对于基于 Node.js 的项目来说,这意味着安装最新的官方驱动包——Connector/Node.js。 使用 npm 来获取最新版本的 connector: ```bash npm install mysql2 --save ``` 之后,在代码里引入新模块替代原来的 `require('mysql')` 调用: ```javascript const mysql = require('mysql2'); // ... ``` 这种方法不仅解决了当前的问题,还能够享受到性能改进和其他功能增强带来的好处[^4]。 #### 注意事项 - 修改完这些设置以后记得重启 MySQL 服务使改动生效。 - 如果是在生产环境中实施此类变更,请先做好充分测试以确保不会影响现有业务逻辑的安全性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的老周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值