MontyLemons
MontyLemons

Reputation: 69

Granting privileges to a user named "Grant"?

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.

Upvotes: 6

Views: 471

Answers (2)

Lukas Eder
Lukas Eder

Reputation: 220952

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.

Upvotes: 7

Steve Brandli
Steve Brandli

Reputation: 566

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'.

Upvotes: 1

Related Questions