web-dev-qa-db-fra.com

Accorder des privilèges à un utilisateur nommé "Grant"?

CREATE USER 'Grant'@'localhost' IDENTIFIED BY 'bestpasswordever';

Comment accorder des autorisations à un utilisateur nommé "Accorder"? Il jette une erreur.

GRANT INSERT, DELETE
ON table
TO Grant@localhost;

Erreur: "Grant" n'est pas valide à cette position. En attente d'un identifiant.

6
MontyLemons

Vous devez utiliser des backticks lorsque vous utilisez des mots-clés réservés ou des identifiants avec des caractères par ailleurs illégaux comme identifiants

GRANT INSERT, DELETE
ON table
TO `Grant`@localhost;

Les apostrophes ou les guillemets doubles conviennent également à la documentation :

Citez les noms d'utilisateur et les noms d'hôte sous forme d'identificateurs ou de chaînes, en utilisant des accents inversés (`), des guillemets simples (') ou des guillemets doubles ("). Pour connaître les consignes relatives aux guillemets de chaînes et d'identificateurs, reportez-vous à la Section 9.1.1, "Littéraux de chaîne" et Section 9.2, "Noms des objets de schéma".

... mais je suis puriste et j'utiliserai toujours des backticks dans MySQL, pour les identifiants.

8
Lukas Eder
GRANT INSERT,DELETE
ON table
TO 'Grant'@'localhost';

Voir Section 6.2.4 (Spécification des noms de compte) dans la documentation.

La syntaxe du nom de compte est 'nom_utilisateur' @ 'nom_hôte'.

1
Steve Brandli