Maison >base de données >tutoriel mysql >Comment résoudre l'erreur ERREUR 1064 (42000) signalée par MySQL dans Grant
La plupart des méthodes d'octroi trouvées sur Internet signaleront des erreurs. La raison principale est qu'après la version 8.0 de MySQL, la méthode d'origine ne peut plus être utilisée
Pour interroger la version de MySQL
SELECT version();
Sous la version 8.0
grant all privileges on test.* to test@'%' identified by '123456';
Les erreurs sont signalé
ERREUR 1064 (42000) : Vous avez une erreur dans votre syntaxe SQL ; vérifiez dans le manuel qui correspond à la version de votre serveur MySQL la bonne syntaxe à utiliser près de 'identifié par '123456'' à la ligne 1
Correct grant way
create user test@'localhost' identified by '123456';
grant all privileges on test.* to test@'localhost';
flush privileges;
Connexion par mot de passe MySQL8.0 Pas à la hauteur
alter user test@'localhost' identified with mysql_native_password by '123456';
Ajouté : MySQL ERROR 1064 (42000) - Grant signale toujours une erreur quoi qu'il arrive, que se passe-t-il ?
Les amis qui ont utilisé MySQL savent qu'il y a souvent des opérations d'octroi (autorisation). Je me demande si vous avez rencontré un tel problème.
ERREUR 1064 (42000) : Vous avez une erreur dans votre syntaxe SQL ; vérifiez dans le manuel qui correspond à la version de votre serveur MySQL la bonne syntaxe à utiliser près de «identifié par «123456’’
MySQL accorde SQL
Collez-le dans le terminal et exécutez-le,
une erreur sera signalée !Après avoir tapé chaque lettre, elle est exécutée, une erreur est à nouveau signalée !
Confirmé et exécuté plusieurs fois, Une erreur est revenue à nouveau !
Je deviens fou, que dois-je faire ? Ne vous inquiétez pas, continuez à lire l'article.
Les différences entre les versions provoquent
Test avec des données réelles
mysql> grant all privileges on test.* to test@'%' identified by '123456'; 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 '123456'' at line 1
Une erreur est signalée
2. Essayez-le à nouveau avec MySQL 5.7
mysql> grant all privileges on test.* to test@'%' identified by '123456'; Query OK, 0 rows affected, 1 warning (0.08 sec) mysql> flush privileges;
Succès.
Amis attentifs, avez-vous remarqué qu'il y a un message dans le résultat renvoyé : 1 avertissement, c'est quoi ?
mysql> show warnings; +---------+------+------------------------------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------------------------------------------------------------------------------------------------+ | Warning | 1287 | Using GRANT for creating new user is deprecated and will be removed in future release. Create new user with CREATE USER statement. | +---------+------+------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
Il s'avère que dans MySQL 5.7, le responsable a rappelé que cette syntaxe SQL sera obsolète.
Exécution correcte de Grant
mysql> create user test@'localhost' identified by '123456';
Query OK, 0 rows affected (0.10 sec)
mysql> grant all privileges on test.* to test@'localhost';
Query OK, 0 rows affected (0.17 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.18 sec)
Il est recommandé d'utiliser cette méthode pour accorder des autorisations lors d'une utilisation future, car elle convient également à MySQL version 5.7 et la méthode officielle a abandonné la méthode de création d'utilisateur et d'octroi d'autorisations en un clic.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!