【问题标题】:Want to create a mysql user who can create new databases users想创建一个可以创建新数据库用户的mysql用户
【发布时间】:2020-05-18 00:47:12
【问题描述】:

我正在创建一个 SAAS 网站,每个新帐户创建都应该有:

  • 从我的 php 代码为它动态创建的新数据库,
  • 从我的 PHP 代码动态创建的新 MySQL 用户并被授予对新数据库的权限。

我的问题是:我怎样才能创建一个有权限执行这些操作的 MySQL 用户,(创建数据库、创建用户、授予权限)。

但重要的是要注意:我希望这个 MySQL 用户不能显示或操作任何其他不是由他创建的数据库。

注意:我有一个可以访问 WHM 的服务器。

【问题讨论】:

    标签: mysql mariadb


    【解决方案1】:

    使名为 userguy 的新用户能够在数据库 db

    上创建其他用户

    创建用户

    CREATE USER 'userguy'@'%' IDENTIFIED BY 'password';
    

    他需要重新加载全局权限

    GRANT CREATE USER, RELOAD  ON *.* TO 'userguy'@'%';
    

    然后你想在 db 上给他任何权利

    GRANT EXECUTE, SELECT, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, LOCK TABLES  ON `db`.* TO 'userguy'@'%' WITH GRANT OPTION;
    

    最后刷新

    FLUSH PRIVILEGES;
    

    这应该可以完成工作。

    更新:
    对不起,我没有仔细阅读这个问题(怪罪咖啡)。如果用户还应该创建新数据库,他还需要全局 CREATE 权限,并且要为他创建的数据库创建用户,他还需要 CREATE USER

    GRANT CREATE, CREATE USER, SELECT, RELOAD  ON *.* TO 'userguy'@'%';
    

    在我看来,不需要全局 GRANT 权限

    【讨论】:

    • 不,这个用户没有创建数据库的能力,所以这个答案是不正确的。
    • @Shadow 如果您阅读了第一行“启用名为 userguy 的新用户在数据库 db 上创建其他用户”...
    【解决方案2】:

    我在以下链接中找到了我的问题的主要答案: https://stackoverflow.com/a/13041542/9419598

    通过使用: 在testuser_% 上授予所有特权。 * TO 'testuser'@'%';

    这将允许 testuser 创建以 testuser_ 开头的数据库,并且对它们拥有所有特权

    而且他不会对其他数据库拥有特权。 我可以授予他创建用户权限

    这可以解决问题。

    【讨论】:

    • CREATE, CREATE USER, SELECT, RELOAD 就够了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2014-07-14
    • 2020-09-02
    • 2017-10-02
    • 2014-11-29
    相关资源
    最近更新 更多