MySQL 8:ER_NOT_SUPPORTED_AUTH_MODE

时间:2018-10-02 13:58:50

标签: mysql node.js

设置

    在Windows 10 PC上的 localhost:3000 上运行的
  • Expressjs(节点)。
  • MySQL通过 docker-machine 在192.168.99.100:3306的Docker容器中运行。

问题

当尝试使用以下方法将服务器连接到MySQL时:

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

获取:

  

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

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

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

但是我得到了

  

mysql> ALTER USER'root'@'localhost'由mysql_native_password通过'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容器,没有任何反应。

1 个答案:

答案 0 :(得分:1)

我希望您不要在字面上使用值'MyNewPass',但是肯定看起来像它。那应该是一个示例占位符。

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

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