node-mysql连接mysql失败Error: ER_NOT_SUPPORTED_AUTH_MODE

本文解决了一个在Linux环境下使用Node.js连接MySQL 8.0.12版本时遇到的“Client does not support authentication protocol requested by server”错误。通过调整MySQL用户的认证方式为mysql_native_password,并提高密码强度,成功解决了这一问题。

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

报错信息

{ Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

这是自己在我的linux机器上,安装了
mysql Ver 8.0.12 for Linux on x86_64 (MySQL Community Server - GPL)
这个版本,然后我本地使用node-mysql去连接数据库。报错的信息。
经过一连串的研究,终于解决了这个问题。

解决步骤

  • 第一步谷歌
    查到了 https://stackoverflow.com/questions/50093144/mysql-8-0-client-does-not-support-authentication-protocol-requested-by-server
    这个答案,和我报错的步骤基本一样,按照这个进行操作,登录mysql使用这个
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

然后本地又报这个错误

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这个错误的含义是你的密码安全等级太低了。
这里的password的意思是你登录mysql使用的password帐号

  • 报错原因
    因为mysql版本较高,最新的加密方式node还不支持,之前在本地用phpMyadmin连接mysql也出现过这样的问题,当时也是修改mysql密码保存方式,不过当时因为是本地电脑采用的是图形化界面解决的方式,只需要勾选一个按钮重启就好了。

欢迎关注本人公众号:前端工程师发展之路

### 解决方案 当遇到 `ER_NOT_SUPPORTED_AUTH_MODE` 错误时,这通常是因为 MySQL 客户端版本较旧,无法支持服务器所使用的身份验证协议。以下是具体的解决方案: #### 修改用户的认证方式 可以通过更改 MySQL 用户的认证插件来解决问题。具体操作如下: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password'; ``` 此命令会将用户 `root` 的认证方式更改为 `mysql_native_password`,这是大多数 MySQL 客户端可以理解的一种加密方式[^3]。 执行上述 SQL 命令后,请确保重启数据库服务以使更改生效: ```bash sudo systemctl restart mysqld ``` #### 更新 MySQL 驱动程序或客户端库 如果可能的话,升级 Node.js 中的 MySQL 库也是一个有效的办法。例如,在项目中更新 `mysql2` 或者 `mysql` 模块至最新版本: ```bash npm install mysql2@latest ``` 通过这种方式,可以让客户端兼容最新的认证协议[^1]。 #### 加载备份数据并测试连接 假设之前有导出的数据文件(如 `data-for-upgrade.sql`),可以在修复配置之后重新导入这些数据: ```bash mysql -u root -p --force < data-for-upgrade.sql ``` 这样可以帮助恢复完整的数据库环境,并进一步确认问题是否已经彻底解决[^4]。 --- ### 注意事项 - 如果正在运行的是自定义编译版 MySQL,则需注意其源码安装过程中的 MD5 校验值匹配情况,比如: ```bash md5sum -b MySQL-5.6.26-1.rhel5.src.rpm ``` 输出应与官方发布的哈希一致[^5]。 - 对于生产环境中涉及敏感信息的操作务必谨慎处理密码设置以及权限分配等问题。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值