【问题标题】:grant create database privilege to mariadb user向 mariadb 用户授予创建数据库权限
【发布时间】:2021-02-05 13:20:47
【问题描述】:

我知道在数据库管理中,使用 root 用户是一种不好的行为,我正在设置一个具有基本权限的自定义用户(创建数据库、删除数据库、对所有新创建的数据库的所有访问权限等)。 我创建了一个用户 antoine,它应该是用于登录 mariadb server 的基本用户。

问题是,我不知道如何授予像create database xxxdrop database xxx 等管理权限...文档解释说要授予权限,请运行以下命令:

GRANT role ON database.table TO user@host

但是,当涉及到服务器权限时,我该怎么做呢?我试过 *.* 而不是 database.table 但它不起作用。

【问题讨论】:

    标签: mysql database mariadb privileges


    【解决方案1】:

    创建一个用户,然后授予该用户您希望他们拥有的权限。

    CREATE USER 'antoine'@'localhost' IDENTIFIED VIA mysql_native_password USING 'a-password';
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON *.* TO 'antoine'@'localhost'; 
    

    【讨论】:

    • ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number - 我的密码有什么问题?在this 回答中使用它很好
    【解决方案2】:

    演示:

    我创建了一个有权连接但没有其他权限的用户。

    mysql> create user 'testy'@'%' identified by 'testy';
    Query OK, 0 rows affected (0.02 sec)
    

    我以该用户身份登录,发现他们无权创建架构(数据库的同义词)。

    $ mysql -utesty -ptesty
    
    mysql> create schema test2;
    ERROR 1044 (42000): Access denied for user 'testy'@'%' to database 'test2'
    

    以我的管理员用户身份登录并授予他们权限:

    mysql> grant create on *.* to 'testy'@'%';
    Query OK, 0 rows affected (0.01 sec)
    

    现在我的测试用户可以做到了:

    $ mysql -utesty -ptesty
    
    mysql> create schema test2;
    Query OK, 1 row affected (0.01 sec)
    

    我不知道您所说的“它不起作用”是什么意思。这不是描述问题的好方法。你执行的命令是什么?当你执行那个命令时发生了什么?有没有报错?如果是这样,错误是什么?

    【讨论】:

    • 我的想法是我可能忘记刷新权限并在另一个终端上运行连接的用户。所以授权表可能没有更新......但我了解到,服务器权限没有特殊命令:D。感谢我注意到它。
    • 在我的示例中,我必须像暴躁一样断开连接并在 GRANT 之后重新连接以获得这些权限。但仅此而已。 GRANT/REVOKE 后无需刷新权限。
    猜你喜欢
    • 2015-09-28
    • 1970-01-01
    • 2015-01-23
    • 2015-02-16
    • 1970-01-01
    • 2019-12-28
    • 2016-11-04
    • 1970-01-01
    • 2021-01-01
    相关资源
    最近更新 更多