授予Mariadb用户创建数据库的权限

7

我知道在数据库管理中,使用root用户是一种不好的行为,所以我设置了一个基本权限的自定义用户(创建数据库、删除数据库、所有新建数据库的访问等)。

我已经创建了一个用户名为antoine的用户,应该作为登录到mariadb服务器的基础用户。

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

GRANT role ON database.table TO user@host

但是,当涉及到服务器权限时,我该怎么做呢?我曾尝试使用*.*代替database.table,但它没有起作用。

2个回答

7
创建用户并赋予所需权限,操作步骤如下:
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'; 

1
错误1372(HY000):密码哈希应该是一个41位十六进制数。我的密码有什么问题?在此答案中使用它这个没有问题。 - Line

6

示例:

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

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。感谢你提醒我。 - DataHearth
1
在我的例子中,我不得不断开连接并重新连接以获得这些特权。但仅此而已。在GRANT/REVOKE之后不需要刷新权限。 - Bill Karwin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接