代码之家  ›  专栏  ›  技术社区  ›  eikes

允许MySQL用户创建数据库,但只允许访问自己的数据库

  •  43
  • eikes  · 技术社区  · 14 年前

    我想要一个 一个MySQL用户能够发出如下命令

    CREATE DATABASE dbTest;
    

    拥有 数据库。

    我所能找到的就是如何由DBA创建数据库,并将此数据库的权限授予特定用户:

    GRANT ALL PRIVILEGES ON dbTest.* TO 'user';
    

    或将所有数据库的权限授予用户:

    GRANT ALL PRIVILEGES ON *.* TO 'user';
    

    但这两者都不是我想要的,因为它需要规模和安全。

    4 回复  |  直到 14 年前
        1
  •  98
  •   user254875486 TM Creative    9 年前

    你可以用

    GRANT ALL PRIVILEGES ON `testuser\_%` .  * TO 'testuser'@'%';
    

    授予用户 testuser 对名称以开头的所有数据库的权限 testuser_ .

        2
  •  26
  •   Drew Hammond    10 年前

    GRANT ALL PRIVILEGES ON `testuser_%` . * TO 'testuser'@'%';
    

    testuser 对名称以开头的所有数据库的权限 testuser_ .

    编辑:我不确定这个用户现在是否也被允许创建数据库。

    是的,这允许 测试用户 创建仅限于以开头的名称的数据库 测试用户_

        3
  •  15
  •   Janek Bogucki Darrell White    14 年前

    • 创建数据库。
    • 设置数据库的权限,以便只有当前用户有权访问。
    • 执行FLUSH PRIVILEGES以从grant表重新加载特权。

    使用 USER() 获取当前用户登录详细信息。

    Find out more about SQL SECURITY DEFINER .

        4
  •  1
  •   Ada Lovelace    9 年前

    这是不可能的 仅使用权限 .

    另一个答案中建议的解决方法: GRANT ALL PRIVILEGES ON 测试用户百分比 . * TO 'testuser'@'%';

    例如,如果用户 aaa 创建数据库 bbb_xyz ,则用户可以以独占方式访问它 bbb 但不是按用户 aaa级