【问题标题】:Grant CREATE TABLE permission to MySQL User向 MySQL 用户授予 CREATE TABLE 权限
【发布时间】:2015-11-27 22:43:23
【问题描述】:

我有一个在一些用户之间共享的数据库,我想管理他们对此的权限。

我想授予创建新表以及访问(选择、插入、更新、删除)该表的权限,当然,授予对数据库没有完全权限的用户(只有他有 SELECT 访问权限到一些表)。

所以,我执行了这个查询:

GRANT CREATE ON eh1 TO user1

然后,当我使用该用户登录并尝试创建一个新表时,我收到了以下错误:

1142 - 用户 'user1'@'localhost' 拒绝表 'folan' 的 CREATE 命令

这里有什么问题?我该怎么做?

更新

通过将命令更改为以下内容部分解决了问题:

GRANT CREATE ON eh1.* TO user1

现在还有一个问题,user1 无法选择或插入到新创建的表中。原因是可以理解的,但是有没有办法解决呢?

谢谢

【问题讨论】:

    标签: mysql permissions create-table grant


    【解决方案1】:

    按以下方式使用-

    GRANT CREATE ON eh1.* TO user1@'%' IDENTIFIED BY 'user1_password';
    

    注意:'%' 将提供来自所有 ip 的访问权限,因此我们应该提供对特定 ip 而不是所有 ip 的权限,因此将 '%' 更改为任何 ip,例如 '191.161.3.1'

    如果用户需要选择/插入/更新/删除/创建权限,那么语法将是 -

    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON eh1.* TO user1@'%' IDENTIFIED BY 'user1_password';
    

    根据用户要求更新:

    GRANT CREATE ON eh1.* TO user1@'%' IDENTIFIED BY 'user1_password';
    GRANT SELECT, INSERT, UPDATE ON eh1.table1 TO user1@'%';
    GRANT SELECT, INSERT, UPDATE ON eh1.table2 TO user1@'%';
    

    【讨论】:

    • 是的,这有效,但仍然存在问题。用户无法从创建的表中选择行。
    • 首先检查用户需要什么权限并分配所有必需的权限..如果用户需要检查表数据并插入/更新/删除它们,那么权限将在我的答案中更新..跨度>
    • 我不想允许用户访问数据库中的所有表。只有一些表,以及他创建的表。
    • 据我所知,mysql中没有表所有者的概念,所以你必须列出你想在哪个表上为谁提供访问权限。
    • 好吧,看来没办法了。这是因为mysql的权限系统不好。
    【解决方案2】:

    this之后,正确的语法是

    GRANT CREATE ON eh1.* TO user1
    

    使用 eh1 一个数据库。

    如果你不使用“.*”,你的数据库被认为是一个表。

    【讨论】:

    • 是的,这有效,但仍然存在问题。用户无法从创建的表中选择行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2011-08-28
    • 2020-04-28
    • 1970-01-01
    • 2020-11-22
    • 2014-03-14
    • 1970-01-01
    相关资源
    最近更新 更多