Maison  >  Article  >  base de données  >  Comment résoudre l'erreur ERREUR 1064 (42000) signalée par MySQL dans Grant

Comment résoudre l'erreur ERREUR 1064 (42000) signalée par MySQL dans Grant

PHPz
PHPzavant
2023-05-28 23:53:133880parcourir

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

Tout d'abord, vérifiez d'abord votre version de MySQL. La plupart des versions de MySQL qui signalent des erreurs sont 8.0. Les erreurs ne seront pas signalées en mémorisant ou même en tapant à l'aveugle des commandes. le plus 5.7. Croyez-le ou non ?

Test avec des données réelles

1. Essayez-le d'abord avec MySQL 8.0

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

Donc, dans MySQL version 8.0 et versions ultérieures, comment exécuter correctement Grant ?

Créez d'abord un utilisateur, puis accordez l'autorisation.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer