MySQL8.0与mysql2配合使用中遇到的一个坑

最近使用了egg搭建了博客的服务端,并且使用了MySQL作为数据库。

egg使用了egg-sequelize作为与数据库交互的插件,而egg-sequelize则使用了sequelize,sequelize使用了mysql2。

从MySQL8.0开始,首选身份验证插件从mysql_native_password变成了caching_sha2_password。因此,在使用mysql2链接MySQL的时候会提示身份验证失败。(文档介绍

目前的一个解决办法就是手动使用mysql_native_password插件来生成新的密码。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your password';

修改完成之后,再使用mysql2就能成功连接。