首页 > 解决方案 > MySQL 8:ER_NOT_SUPPORTED_AUTH_MODE

问题描述

设置

问题

尝试使用以下命令将服务器连接到 MySQL 时:

const connection = mysql.createConnection({
  host: '192.168.99.100',
  user: 'root',
  password: 'foo123',
  database: 'foo_db'
});

得到:

错误:ER_NOT_SUPPORTED_AUTH_MODE:客户端不支持服务器请求的身份验证协议;考虑升级 MySQL 客户端

在 StackOverflow 上检查了很多答案。他们中的大多数使用(示例):

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

但是我得到:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass'; 查询正常,0 行受影响(0.06 秒)

服务器仍然不想连接。使用 MySQL 5.7 可以正常工作。

任何想法如何为 MySQL 8 解决这个问题?


添加:

只是为了清楚:

连接到 MySQL 后,运行:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'foo123';
FLUSH PRIVILEGES;

重新启动 Node.js 和 MySQL 容器,没有任何反应。

标签: mysqlnode.js

解决方案


我希望您没有按字面意思使用 value 'MyNewPass',但它确实看起来像它。这应该是一个示例占位符。

在您的情况下,您必须这样做:

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

推荐阅读