Tiven

Tiven

博观而约取,厚积而薄发

天问的个人网站(天问博客),专注于Node.js、Vue.js、React、Vite、Npm、Nginx等大前端技术。不断学习新技术,记录日常开发问题,持续分享coding,极客开源,共同进步。生命不息,奋斗不止... [ hexo blog ]

egg-mysql连接报错:ER_NOT_SUPPORTED_AUTH_MODE


使用 egg-mysql 连接 MySQL 数据库时报错:nodejs.ER_NOT_SUPPORTED_AUTH_MODEError: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

egg-mysql

一、报错原因

使用 egg-mysql 中间件连接数据库 MySQL8.0,MySQL8.0 之前的版本中加密规则是 mysql_native_password ,而 MySQL8.0,加密规则是 caching_sha2_password

二、解决办法

将加密规则还原成 mysql_native_password 。使用 mysql 命令行进行操作,步骤如下:

  1. 以管理员身份启动 mysql 服务
net start mysql
  1. 登录 mysql 命令行模式
# 用户名 root

mysql -uroot -p

# 回车输入密码
  1. 使用 mysql 命令修改加密规则
alter user 'root'@'localhost' identified with mysql_native_password by '123456';

# 用户名 root
# 本地服务 localhost
# 密码 123456

提示: 用户名、本地服务和密码根据自己的设置进行替换即可,需要加 单引号 ,最后结束要加 ;

  1. eg:
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.01 sec)
  1. 输出 Query OK, 0 rows affected (0.01 sec) 说明已经设置成功。

欢迎访问:天问博客