J'ai eu ce défi en travaillant sur MySQL Ver 8.0.21
Je voulais accorder les permissions d'une base de données nommée my_app_db
à la root
utilisateur fonctionnant sur localhost
hôte.
Mais quand je lance la commande :
use my_app_db;
GRANT ALL PRIVILEGES ON my_app_db.* TO 'root'@'localhost';
Je reçois l'erreur :
ERREUR 1064 (42000) : Vous avez une erreur dans votre syntaxe SQL ; consultez le manuel correspondant à la version de votre serveur MySQL pour connaître la syntaxe à utiliser près de 'my_app_db.* TO 'Root'@'localhost'' à la ligne 1>.
Voici comment j'ai réparé :
Connectez-vous à votre console MySQL. Vous pouvez modifier root
à la utilisateur avec lequel vous voulez vous connecter :
mysql -u root -p
Entrez votre mysql Mot de passe racine
Ensuite, dressez la liste de tous les utilisateurs et de leur hôte sur le serveur MySQL. Contrairement à PostgreSQL, ceci est souvent stocké dans le fichier mysql
base de données. Nous devons donc sélectionner le mysql
la base de données en premier :
use mysql;
SELECT user, host FROM user;
Nota : si vous n'exécutez pas le use mysql
vous obtenez le no database selected
erreur.
Cela devrait vous donner un résultat de ce type :
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)
Ensuite, sur la base des informations obtenues dans la liste, accordez les privilèges à l'utilisateur que vous souhaitez. Nous devrons d'abord sélectionner la base de données avant de lui accorder des droits. Pour moi, j'utilise la base de données root
qui fonctionne sur le localhost
hôte :
use my_app_db;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
Nota : Le site GRANT ALL PRIVILEGES ON database_name.* TO 'root'@'localhost';
peut ne pas fonctionner pour les versions modernes de MySQL. La plupart des versions modernes de MySQL remplacent la commande database_name
con *
en el accorder des privilèges après avoir sélectionné la base de données que vous voulez utiliser.
Vous pouvez alors quitter la console MySQL :
exit
C'est tout.
J'espère que cela vous aidera
11 votes
Qu'est-ce que vous obtenez lorsque vous affichez les subventions pour l'utilisateur actuel ;
6 votes
Avez-vous essayé d'exécuter
FLUSH PRIVILEGES
?2 votes
@Andy Merci pour "SHOW GRANTS FOR CURRENT_USER ;" - cela m'aide à voir ma faute de frappe.
3 votes
@Romain,
flush privileges
n'est pas nécessaire lorsque vous utilisezgrant
des commandes. x46 votes
Vous devez utiliser
FLUSH PRIVILEGES;
seulement si vous modifiez directement les tables de subventions en utilisant des instructions telles queINSERT
,UPDATE
ouDELETE
0 votes
Essayez également de vous reconnecter pour l'utilisateur