【问题标题】:Granting privileges to a user named "Grant"?向名为“Grant”的用户授予权限?
【发布时间】:2020-08-08 09:37:55
【问题描述】:
CREATE USER 'Grant'@'localhost' IDENTIFIED BY 'bestpasswordever';

如何向名为“Grant”的用户授予权限?它会引发错误。

GRANT INSERT, DELETE
ON table
TO Grant@localhost;

错误:“授予”在此位置无效。需要一个标识符。

【问题讨论】:

    标签: mysql sql grant


    【解决方案1】:

    在使用保留关键字或带有其他非法字符的标识符作为标识符时,您必须使用反引号

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

    根据the documentation,撇号或双引号也可以:

    使用反引号 (`)、单引号 (') 或双引号 (") 将用户名和主机名作为标识符或字符串引用。有关字符串引用和标识符引用指南,请参阅第 9.1 节.1,“字符串文字”和第 9.2 节,“架构对象名称”。

    ...但我是一个纯粹主义者,并且总是在 MySQL 中使用反引号作为标识符。

    【讨论】:

      【解决方案2】:
      GRANT INSERT,DELETE
      ON table
      TO 'Grant'@'localhost';
      

      请参阅文档中的Section 6.2.4 (Specifying Account Names)

      帐户名称语法为 'user_name'@'host_name'。

      【讨论】:

        猜你喜欢
        • 2016-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-29
        • 1970-01-01
        相关资源
        最近更新 更多