GNU/Linux >> Tutoriels Linux >  >> Linux

Erreur lors de l'utilisation de GRANT avec IDENTIFIED by password dans MySQL

Question :J'utilise IDENTIFIED BY 'password' avec l'instruction GRANT depuis des années dans de nombreuses versions de MySQL. Cependant, la même chose a échoué dans MySQL version 8.0.26 sur ma nouvelle version 8 de CentOS Stream. Vous trouverez ci-dessous le message d'erreur complet. Quel pourrait être le problème ? – Tushar.

mysql> GRANT ALL PRIVILEGES ON qdb.* TO 'quser'@'localhost' IDENTIFIED BY 'qcuser123';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near IDENTIFIED BY 'quser123' at line 1

Erreur lors de l'utilisation de GRANT avec IDENTIFIED by password

Cependant, l'utilisation du mot de passe IDENTIFIED BY avec l'instruction GRANT est obsolète depuis MySQL version 5.7.6. Cela signifie que vous devez utiliser IDENTIFIED par mot de passe avec CREATE USER ou ALTER USER et appliquer GRANT PRIVILEGES comme indiqué ci-dessous :

CRÉER UN UTILISATEUR et attribuer un mot de passe.

mysql> CREATE USER 'quser'@'localhost' IDENTIFIED BY 'qc123';
Query OK, 0 rows affected (0.12 sec)

Ajouter des privilèges à l'aide de GRANT :

mysql> GRANT ALL PRIVILEGES ON qdb.* TO 'quser'@'localhost';
Query OK, 0 rows affected (0.03 sec)

Pourquoi ce changement dans la dernière version de MySQL ?

Le changement est logique pour les raisons ci-dessous :

  • Utiliser IDENTIFIED BY mot de passe avec les privilèges GRANT définira tout mot de passe spécifié comme nouveau mot de passe pour le compte. Supposons que s'il existe déjà un compte avec un mot de passe différent, l'exécution des privilèges GRANT avec le mot de passe IDENTIFIED BY écrasera le mot de passe existant. Ainsi, la suppression de IDENTIFIED de GRANT signifie que le compte reste avec le mot de passe qui a été défini lors de la création.
  • Depuis la version 5.7.2 de MySQL, si un compte existe déjà, IDENTIFIÉ par "mot de passe" est interdit et ne doit être utilisé que lors de la création du compte, c'est-à-dire avec CREATE USER ou ALTER USER .
  • GRANT peut créer un compte utilisateur s'il n'existe pas.
    • Si NO_AUTO_CREATE_USER enabled
      • Si un compte spécifié dans l'instruction GRANT n'existe pas, GRANT ne parviendra pas à créer un compte à moins que le mot de passe non vide ne soit spécifié via IDENTIFIED BY ou via IDENTIFIED WITH.
    • Si NO_AUTO_CREATE_USER disabled
      • Si un compte spécifié dans l'instruction GRANT n'existe pas, alors GRANT crée le compte. Cela peut ne pas être sécurisé si aucun mot de passe n'est spécifié via IDENTIFIED BY.

Enfin, GRANT avec le mot de passe IDENTIFIED BY est obsolète et le compte utilisateur doit être créé à l'aide de CREATE USER ou ALTER USER.

via StackOverflow.


Linux
  1. SSHPass :comment se connecter en SSH à un serveur à l'aide d'un script sans mot de passe (de manière non interactive)

  2. Utiliser Word Wrap avec Mc ?

  3. Accéder à Mysql à l'aide du terminal dans Ubuntu 13.04 ?

  4. Comment installer MySQL sur Ubuntu 22.04

  5. ERREUR 1045 (28000) :Accès refusé pour l'utilisateur 'root'@'localhost' (en utilisant le mot de passe :OUI)

Utilisation de PHP-FPM avec Apache sur Ubuntu 16.04

Comment utiliser MySQL avec l'application Ruby On Rails

Comment ajouter un nouvel utilisateur MySQL avec des autorisations GRANT

Comment réinitialiser le mot de passe root MySQL

Comment installer MySQL 8.0 sur Ubuntu 18.04

Comment se connecter à MySQL en utilisant PHP