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

在工作中,大家都会遇到这样的场景,出于对数据库访问安全的考虑,对于某些用户我们不想让他们看到全库的表,只想给他们特定表的访问权限。那么在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;

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用户下的表。

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

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

保定公民

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值