尝试使用以下方法将服务器连接到 MySQL 时:
const connection = mysql.createConnection({
host: '192.168.99.100',
user: 'root',
password: 'foo123',
database: 'foo_db'
});
Run Code Online (Sandbox Code Playgroud)
获得:
错误:ER_NOT_SUPPORTED_AUTH_MODE:客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端
在 StackOverflow 上检查了很多答案。他们中的大多数使用(示例):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass';
Run Code Online (Sandbox Code Playgroud)
但是我得到:
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;
Run Code Online (Sandbox Code Playgroud)
重新启动 Node.js 和 MySQL 容器,没有任何反应。
小智 6
我希望你不是从字面上使用 value 'MyNewPass',但它确实看起来像它。那应该是一个示例占位符。
在您的情况下,您必须执行以下操作:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'foo123';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6256 次 |
| 最近记录: |