代码中连接 mysql 报错

使用 node 或者其他编程语言的 orm 框架连接 mysql 时报错:

Client does not support authentication protocol requested by server; consider upgrading MySQL client…

原因:

导致这个错误的原因是,目前,最新的mysql模块并未完全支持MySQL 8的“caching_sha2_password”加密方式,而“caching_sha2_password”在MySQL 8中是默认的加密方式。因此,下面的方式命令是默认已经使用了“caching_sha2_password”加密方式,该账号、密码无法在mysql模块中使用。

  1. mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
  2. Query OK, 0 rows affected (0.12 sec)

解决办法

在 命令行中进入 mysql

  1. $ mysql -u root -p
  2. Enter password:

解决方法是从新修改用户root的密码,并指定mysql模块能够支持的加密方式:

  1. mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
  2. Query OK, 0 rows affected (0.12 sec)
  3. 刷新
  4. mysql> FLUSH PRIVILEGES