2
votes

Sequelize ne prend pas en charge le protocole d'authentification MySQL 8 et je ne sais pas comment modifier ce protocole

J'essaie de migrer une base de données avec Sequelize en travaillant avec MySQL 8.0.15, mais je ne suis pas en mesure de le faire. Je continue de recevoir ce message d'erreur.

ls /usr/lib64/mysql/plugin/component_v*
/usr/lib64/mysql/plugin/component_validate_password.so

J'ai essayé toutes les solutions à ce problème. Le problème est que lorsque j'essaye de changer le mot de passe root MySQL, le message que je reçois est celui-ci:

mysql> INSTALL COMPONENT 'file://component_validate_password';
ERROR 3529 (HY000): Cannot load component from specified URN: 
'file://component_validate_password'.

Ensuite, j'ai essayé de changer la politique de validation de mot de passe en suivant cette procédure p>

https: //dev.mysql .com / doc / refman / 5.6 / fr / validate-password-installation.html

puis MySQL s'est écrasé car il est obsolète. Ensuite, j'ai essayé celui-ci

https://dev.mysql.com/doc/refman/8.0/en/validate-password-installation.html

Ensuite, j'ai eu ceci

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements


0 commentaires

3 Réponses :


3
votes

Si vous souhaitez utiliser l'authentification de style MySQL 5.x, il vous suffit généralement d'ajouter ceci à votre my.cnf :

[mysqld]
default_authentication_plugin=mysql_native_password

Faites ceci avant d'ajouter des utilisateurs. Utilisez uniquement les utilisateurs pour vous connecter via Sequelize, jamais root .


5 commentaires

Ça a marché!!!! mais une dernière chose pourquoi est-ce "Utilisez uniquement les utilisateurs pour se connecter via Sequelize, jamais root." @tadman?


Ce que je veux dire, c'est de ne pas utiliser "root" comme compte pour accéder à la base de données. Utilisez-le uniquement lors de l'ajout ou de la suppression d'autres utilisateurs, comme pour l'administration uniquement. Sequelize doit se connecter à l'aide d'un compte spécifique à ce projet ou à cette application qui ne dispose que des privilèges nécessaires, comme s'il est limité aux bases de données nécessaires à cette application. GRANT ALL PRIVILEGES ON app_db. * par exemple.


s'est avéré que cela fonctionne pour un utilisateur et ne fonctionne toujours pas pour la racine. Je ne comprends toujours pas, mais pour l'instant c'est exactement ce dont j'ai besoin. Merci beaucoup


Cela ne s'applique qu'aux nouveaux utilisateurs, pas aux utilisateurs existants.


Ooh cela explique beaucoup de choses. Merci!



0
votes

Si vous utilisez MySQL 8.0, https: //dev.mysql.com/doc/refman/5.6/en/validate-password-installation.html alors cela ne devrait pas fonctionner.

Avez-vous utilisé mysql_secure_installation et installé le validate_password_component alors?

Si oui, dans ce cas, le plugin doit déjà être installé et tout ce que vous avez à faire est de définir les paramètres liés à validate_password dans le fichier d'options (par défaut /etc/my.cnf) et certaines options nécessitent un redémarrage du serveur.


0 commentaires

0
votes

Pour ceux qui ne peuvent pas modifier les variables système (par exemple, si vous utilisez une base de données gérée dans AWS ou DigitalOcean), cela fonctionne également:

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

Ou, si vous ne pouvez pas exécuter privilèges de vidage; comme moi:

ALTER USER 'foo'@'bar' IDENTIFIED WITH mysql_native_password BY 'password';
flush privileges;


0 commentaires