当尝试使用以下方法将服务器连接到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容器,没有任何反应。
答案 0 :(得分:1)
我希望您不要在字面上使用值'MyNewPass'
,但是肯定看起来像它。那应该是一个示例占位符。
在您的情况下,您必须这样做:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'foo123';