达梦数据库中,如何设置表的访问控制权限?

在工作中,大家都会遇到这样的场景,出于对数据库访问安全的考虑,对于某些用户我们不想让他们看到全库的表,只想给他们特定表的访问权限。那么在DM数据库中我们该如何去配置相应的权限呢?  我们下面来进行详细解析。 我们的测试环境是DM8

1、我们首先来建立一个测试用户test;

SQL>create user test identified by test123456;

2、接下来看一下TEST用户相应的角色和权限。

SQL>Select grantee,granted_role from dba_role_privs where grantee=‘TEST’;

默认是public角色。查看一下public角色所拥有的权限。

SQL>Select grantee,privilege from dba_sys_privs where grantee=‘PUBLIC’;

Public角色默认拥有当前用户下所有表的insert,update,delete,select,grant……权限

3、我们来建两个测试表。在sysdba用户下创建一个T1表,test用户下创建T2表。

SQL>Create table sysdba.t1 (id int,name varchar(20));
SQL>Insert into sysdba.t1 values (1,’sysdba’);
SQL>Commit;

扫描二维码关注公众号,回复: 14977380 查看本文章
SQL>Create table test.t2(id int,name varchar(20));
SQL>Insert into test.t2 values(2,’test’);
SQL>Commit;

4、使用test用户登录数据库,访问相应的表。

[dmdba@NeoKylin6-dm8 ~]$ disql test/test123456
SQL> select * from sysdba.t1;
SQL> select * from t2;

Test用户只能访问本用户下的t2表,不能访问sysdba用户下的t1表。

5、下面我们收回test的public权限,以sysdba用户登录执行。

SQL>Revoke  public  from test;

我们再查询一下test用户的访问权限

我们看到test用户的public权限已被收回。再以test用户登录进行查询,发现test.t2表的访问权限已经没有了,sysdba.t1表的访问权限也已经没有了。

我们给test用户配置相应的表的权限,比如我们只给test用户查看sysdba.t1的权限:

SQL>Grant select on sysdba.t1 to test;

用test用户登录,我们可以查询sysdba.t1表的数据,但是却查询不了test.t2表的数据,因为我们没有赋给test用户,test.t2的查询权限,那怕t2表是test用户下的表。

这样我们表的访问控制权限就配置完成了。 

猜你喜欢

转载自blog.csdn.net/qq_35273918/article/details/130410463
今日推荐