Sequelize不支持MySQL 8自动验证协议和I';我不知道如何改变这个协议

Sequelize不支持MySQL 8自动验证协议和I';我不知道如何改变这个协议,mysql,node.js,sequelize.js,Mysql,Node.js,Sequelize.js,我正在尝试使用Sequelize和MySQL 8.0.15迁移数据库,但我无法做到这一点。我一直收到这个错误消息 Sequelize CLI [Node: 10.15.0, CLI: 5.4.0, ORM: 5.3.5] Loaded configuration file "config/config.json". Using environment "development". ERROR: Client does not support authentication protocol r

我正在尝试使用Sequelize和MySQL 8.0.15迁移数据库,但我无法做到这一点。我一直收到这个错误消息

Sequelize CLI [Node: 10.15.0, CLI: 5.4.0, ORM: 5.3.5]

Loaded configuration file "config/config.json".
Using environment "development".

ERROR: Client does not support authentication protocol requested by server; consider upgrading MySQL client
我已经尝试了这个问题的每一种解决方案。问题是,当我尝试更改MySQL根密码时,我得到的消息如下:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
然后,我尝试按照以下步骤更改密码验证策略

然后MySQL崩溃了,因为它不推荐使用。然后我试了这个

然后我得到了这个

mysql> INSTALL COMPONENT 'file://component_validate_password';
ERROR 3529 (HY000): Cannot load component from specified URN: 
'file://component_validate_password'.
然后我检查了组件的位置

ls /usr/lib64/mysql/plugin/component_v*
/usr/lib64/mysql/plugin/component_validate_password.so
有人能帮忙吗?我现在真的没有选择了


提前感谢

如果您想使用MySQL 5.x风格的身份验证,通常只需将其添加到您的
my.cnf

[mysqld]
default_authentication_plugin=mysql_native_password

在添加任何用户之前执行此操作。仅使用用户通过Sequelize进行连接,切勿使用root用户,如果您使用的是MySQL 8.0,那么这将不起作用

是否使用了mysql\u secure\u安装并安装了validate\u password\u组件


如果是,在这种情况下,插件必须已经安装,您只需在选项文件(默认值/etc/my.cnf)中设置与密码相关的参数,某些选项需要重新启动服务器。

对于无法编辑系统变量的用户(例如,如果您在AWS或DigitalOcean中使用托管数据库),这同样有效:

ALTER USER 'foo'@'bar' IDENTIFIED WITH mysql_native_password BY 'password';
flush privileges;
或者,如果无法运行
刷新权限像我一样:

DROP USER 'foo'@'bar';
CREATE USER 'foo'@'bar' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT INSERT, SELECT, ... ON mydb.* TO 'foo'@'bar';

成功了!!!!但还有一件事为什么“只使用用户通过Sequelize进行连接,而不使用root。”@tadman?我的意思是不要使用“root”作为访问数据库的登录帐户。仅在添加或删除其他用户时使用该选项,如在中仅用于管理。Sequelize应该使用特定于该项目或应用程序的帐户进行连接,该帐户只具有必要的权限,就像它被限制到该应用程序所需的数据库一样<代码>授予app_db上的所有权限。*
例如。结果表明,它为用户工作,但仍不为根用户工作。我还是不明白,但现在这正是我需要的。多谢了,这只适用于新用户,不适用于现有用户。哦,这解释了很多。谢谢