Dat*_*rth 7 mysql database privileges mariadb
我知道在数据库管理中,使用 root 用户是一种不好的行为,我正在设置一个具有基本权限的自定义用户(创建数据库、删除数据库、对所有新创建的数据库的所有访问权限等)。
我已经创建了一个用户,antoine
该用户应该是用于登录mariadb server
.
问题是,我不知道如何授予管理权限,例如create database xxx
,drop database xxx
等等...文档解释说要授予权限,您可以运行以下命令:
GRANT role ON database.table TO user@host
Run Code Online (Sandbox Code Playgroud)
但是,当涉及到服务器权限时,我该怎么办呢?我已经尝试过*.*
但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';
Run Code Online (Sandbox Code Playgroud)
演示:
我创建了一个具有连接权限的用户,但没有其他权限。
mysql> create user 'testy'@'%' identified by 'testy';
Query OK, 0 rows affected (0.02 sec)
Run Code Online (Sandbox Code Playgroud)
我以该用户身份登录,发现他们没有创建模式(数据库的同义词)的权限。
$ mysql -utesty -ptesty
mysql> create schema test2;
ERROR 1044 (42000): Access denied for user 'testy'@'%' to database 'test2'
Run Code Online (Sandbox Code Playgroud)
以我的管理员用户身份登录并授予他们权限:
mysql> grant create on *.* to 'testy'@'%';
Query OK, 0 rows affected (0.01 sec)
Run Code Online (Sandbox Code Playgroud)
现在我的测试用户可以做到:
$ mysql -utesty -ptesty
mysql> create schema test2;
Query OK, 1 row affected (0.01 sec)
Run Code Online (Sandbox Code Playgroud)
我不知道你说的“没用”是什么意思。这不是描述问题的好方法。你执行的命令是什么?当您执行该命令时发生了什么?有没有报错?如果是这样,错误是什么?