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

How do I grant permissions to a user who is named "Grant"? It throws an error.

GRANT INSERT, DELETE
ON table
TO Grant@localhost;

Error: 'Grant' is not valid at this position. Expecting an identifier.

MontyLemons
  • 69
  • 1
  • 5

2 Answers2

8

You have to use backticks when using reserved keywords or identifiers with otherwise illegal characters as identifiers

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

Apostrophes or double quotes are fine, too as per the documentation:

Quote user names and host names as identifiers or as strings, using either backticks (`), single quotation marks ('), or double quotation marks ("). For string-quoting and identifier-quoting guidelines, see Section 9.1.1, “String Literals”, and Section 9.2, “Schema Object Names”.

...but I'm a purist and will always use backticks in MySQL, for identifiers.

Lukas Eder
  • 211,314
  • 129
  • 689
  • 1,509
1
GRANT INSERT,DELETE
ON table
TO 'Grant'@'localhost';

See Section 6.2.4 (Specifying Account Names) in the documentation.

Account name syntax is 'user_name'@'host_name'.

Steve Brandli
  • 556
  • 4
  • 14