我知道在数据库管理中,使用根用户是一种糟糕的行为,而我正在设置一个具有基本权限的自定义用户(创建数据库、删除数据库、访问所有新建数据库等(
我已经创建了一个用户antoine
,它应该是用于登录mariadb server
的基本用户。
问题是,我不知道如何授予create database xxx
、drop database xxx
等管理权限。文档解释说,要授予权限,需要运行以下命令:
GRANT role ON database.table TO user@host
但是,当涉及到服务器权限时,我该怎么做呢?我试过*.*
而不是database.table
,但它不起作用。
创建一个用户,然后像这样授予该用户您希望他们拥有的权限。
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';
演示:
我创建了一个具有连接权限但没有其他权限的用户。
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)
我不知道你说的";它不起作用"这不是描述问题的好方法。你执行的命令是什么?你发出命令时发生了什么?它出错了吗?如果是,错误是什么?