使用Node.js连接数据库时报错"Client does not support authentication protocol requested by s

85 阅读1分钟

报错解释:
这个错误通常发生在MySQL服务器尝试使用新的认证协议与客户端建立连接时,但客户端不支持这个协议。MySQL 8.0及以上版本默认使用的是caching_sha2_password认证插件,而老版本的MySQL可能使用的是mysql_native_password。如果客户端不支持caching_sha2_password,就会出现这个错误。

解决方法:

  1. 升级客户端:确保你的数据库客户端软件是最新版本,支持caching_sha2_password。

  2. 修改服务器认证插件:如果不能升级客户端,可以将MySQL服务器的认证插件改为mysql_native_password。

    • 登录MySQL服务器。

    • 执行以下命令更改用户的密码认证插件:

      sqlALTER USER 'username'@'hostname' IDENTIFIED WITH mysql_native_password BY 'password';
      FLUSH PRIVILEGES;
      
    • 其中username是你的用户名,hostname是你的用户允许连接的主机名,password是你的新密码。

    • 最后刷新一下权限

      FLUSH PRIVILEGES;
      

请根据实际情况选择解决方案。如果选择第二种方法,请注意这样做会降低安全性,因为新的认证插件caching_sha2_password为SHA256签名提供了更好的支持。