error Error: R_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server;
MySQL 8 has supports pluggable authentication methods. By default, one of them named is used rather than our good old (source). It should be obvious that using a crypto algorithm with several handshakes is more secure than plain password passing that has been there for 24 years!caching_sha2_passwordmysql_native_password
Now, the problem is in Node (the package you install with and use it in your Node code) doesn’t support this new default authentication method of MySQL 8, yet. The issue is in here: https://github.com/mysqljs/mysql/issues/1507 and is still open, after 3 years, as of July 2019.mysqljsnpm i mysql
步骤
- 开启MySQL服务;
- 进入终端,在命令行工具输入命令:mysql -u root -p,键入对应密码;
- 执行命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
(BY ‘123456’ 输入的是自己的数据库密码),回车; - 执行命令:
FLUSH PRIVILEGES;
,回车,即可。