GBase 8a对用户权限的控制方法,grant的使用

GBase 8a通过grant语句,对用户访问对象进行限制,本文介绍一些简单的概念和用法,来应对业务需求。

语法

grant 权限 on 对象 to 用户

GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user IDENTIFIED BY [[PASSWORD] [password]]
 [WITH with_option ...]
object_type:
 TABLE | FUNCTION | PROCEDURE
priv_level:
 * | *.* | database_name.* |database_name.table_name
 | table_name | database_name.routine_name

对其中每个部分解释一下

权限

多个权限,可以一次性授权,用逗号分割。 如果是ALL,则代表所有权限(不包括unmask)。

gbase> grant select,insert on testdb.abc to abc;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)
权限名字说明对应gbase.user字段
SELECT 允许使用 SELECT            Select_priv
INSERT 允许使用 INSERT            Insert_priv
UPDATE 允许使用 UPDATE            Update_priv
DELETE 允许使用 DELETE            Delete_priv
CREATE 允许使用 CREATE TABLE            Create_priv
DROP 允许使用 DROP TABLE              Drop_priv
RELOAD 允许使用 FLUSH            Reload_priv
SHUTDOWN 允许使用 gbaseadmin shutdown          Shutdown_priv
PROCESS 允许使用 SHOW FULL PROCESSLISTS           Process_priv
FILE 允许使用 SELECT…FROM TABLE_NAME INTO OUTFILE、LOAD DATA 等              File_priv
GRANT OPTION 允许授予权限             Grant_priv
REFERENCES不支持        References_priv
INDEX 允许使用 CREATE INDEX 和 DROP INDEX             Index_priv
ALTER 允许使用 ALTER TABLE             Alter_priv
SHOW DATABASES显示所有数据库           Show_db_priv
SUPER 允许使用 KILL 和 SET GLOBAL 语句             Super_priv
CREATE TEMPORARY TABLE允许使用 CREATE TEMPORARY TABLE  Create_tmp_table_priv
         Lock_tables_priv
EXECUTE 允许用户运行已存储的子程序           Execute_priv
REPLICATION SLAVE不支持        Repl_slave_priv
unmask脱敏数据            Unmask_priv
CREATE VIEW 允许使用 CREATE VIEW       Create_view_priv
SHOW VIEW 允许使用 SHOW CREATE VIEW         Show_view_priv
CREATE ROUTINE 创建已存储的子程序    Create_routine_priv
ALTER ROUTINE 更改或取消已存储的子程序     Alter_routine_priv
CREATE USER 允许使用 CREATE USER, DROP USER, RENAME USER 和 REVOKE ALL PRIVILEGES       Create_user_priv
EVENT 创建、修改、删除 EVENT 的权限             Event_priv
TRIGGER不支持           Trigger_priv
USAGE 仅仅用于连接登录数据库,主要用来设置 with option 部分 
   
ALL [PRIVILEGES] 设置除 GRANT OPTION 之外的所有简单权限 

对象

支持库级和表级两类。

*.* 所有对象
db.* 全库所有对象
db.object 库下面某个对象,可以是表,视图和存储过程的名字

gbase> grant select on *.* to abc;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> grant select on testdb.* to abc;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> grant select on testdb.abc to abc;
Query OK, 0 rows affected (Elapsed: 00:00:00.01)

使用建议

权限和对象是2个维度,dba需要根据安全要求进行设置。

范围用户说明语法
整个数据库1个管理员权限grant all on *.*
1个库1个库管理元grant all on 库名.*
1个库多个按表授权grant all on 库名.表名
1个库,1个表多个用户按权限,表细分grant X1,X2 on 库名.表名

一个有多个用户,权限完全相同,不想每次都重复授权。可以用角色role。参考

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注