【问题标题】:MySql grant user permissionMySql 授予用户权限
【发布时间】:2012-07-02 19:58:24
【问题描述】:

我想在 MySql 中创建一个新用户。我不希望那个新用户对我现有的数据库做太多事情[我只想授予他选择权限],但他可以用他创建的新数据库做任何事情。

首先,有没有办法根据数据库所有者授予权限?如果有可能,那么这就是我正在寻找的理想之选。如果没有,那么我如何限制特定用户仅访问 [only Select privilege] 某些特定数据库,允许他对其余数据库做任何他想做的事情?

【问题讨论】:

  • @Anuj 您必须为您希望用户访问的每个数据库授予权限
  • 但正如我所说,用户也可以创建新数据库。所以我不能明确地授予用户所有数据库的权限。
  • 没关系,如果你用 HeatfanJhon 的回答解决了这个问题,请告诉我们
  • 没有。我还在等待解决方案。

标签: mysql grant


【解决方案1】:

来自 MySQL grant documentation

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT SELECT ON *.* TO 'jeffrey'@'localhost';
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';

第一个命令创建用户。第二个授权选择所有数据库和表。第三个命令授予对 db1 中所有表的所有访问权限。

您还有什么具体要做的事情吗?

【讨论】:

  • 是的,我读过这篇文章,但我无法得到我的计划。假设我已经有 2 个数据库,即 db1 和 db2。我希望新用户只对这 2 个数据库拥有选择权限,但他应该能够创建自己的新数据库,并且应该能够对该数据库做任何他想做的事情。
  • 相反,我想要类似:GRANT ALL ON . TO 'jeffrey'@'localhost';在 db1.* 上授予 SELECT 到 'jeffrey'@'localhost';但这不起作用。我甚至获得了 db1 的所有权限。
  • 是的,我看到了您的问题。我尝试了一个为用户提供创建权限的测试,并且我能够使用该用户 ID 创建一个新数据库,但是该用户 ID 对所创建的数据库没有任何权限。需要做更多的研究。
  • 是的,而且,创建权限还允许用户在现有数据库中创建表,这也是我不想要的。
【解决方案2】:

要为特定用户提供权限,您可以使用此框架:

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’; 
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

此命令中的星号分别表示他们可以访问的数据库和表——此特定命令允许用户跨所有数据库和表读取、编辑、执行和执行所有任务。

一旦您完成了要为新用户设置的权限,请务必重新加载所有权限。

 FLUSH PRIVILEGES;

有关权限的更多信息,您可以阅读这篇文章 https://www.digitalocean.com/community/articles/how-to-create-a-new-user-and-grant-permissions-in-mysql

有关权限列表,请参阅 MySQL 手册页Privileges Provided by MySQL

【讨论】:

    【解决方案3】:

    打开 mysql 命令提示符。

    要在主机为 localhost 时创建新用户,然后使用此命令

    CREATE user 'test_user'@'localhost' identified by 'some_password';
    

    对于任何主机使用 %,像这样

    CREATE user 'test_user'@'%' identified by 'some_password';
    

    创建用户后,您需要授予一些访问权限。为此使用以下命令。

    GRANT SELECT,INSERT,UPDATE
    ON database_name.table_name
    TO 'test_user'@'localhost';
    

    上述查询成功执行后,test_user可以在database_name(数据库名)的table_name(表名)中选择、插入和更新。

    【讨论】:

      【解决方案4】:

      grant privilege 是这样在数据库中给出的

      grant privilege on object to user
      

      object 是任何数据库表或关系,user 可能是授予他权限的人。

      例子

      grant select,insert,update,on object name to user name
      
      grant select on employee to john with grant option;
      
      revoke delete on employee from john.
      

      【讨论】:

        猜你喜欢
        • 2020-11-22
        • 2014-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-27
        • 1970-01-01
        • 2019-10-03
        • 1970-01-01
        相关资源
        最近更新 更多