1.角色就是一系列权限的集合,是方便用户操作的一个方式,因为把很多的权限(如很多表的查询权限,或者其他权限等)打包到一个角色中,后面要授予某个用户所有这些权限,只需要【grant 角色 to 用户】就可以了。
2. 达梦数据库默认有三个角色:DBA、RESOURCE、PUBLIC 三个角色。
3. DBA 角色中,是系统全部权限的即可,授予了 DBA,就是数据库系统中的老大了。
4. RESOURCE 角色中,是对应用户自己用户下的全部权限,授予了 RESOURCE ,就是用户可以在自己的用户下尽情操作了。
情形1:
create user user_name_1 identified by passwd123456;
情形2:
create user user_name_2 identified by passwd123456; grant resource to user_name_2;
情形3:
create user user_name_3 identified by passwd123456; grant dba to user_name_3;
情形4:
create user user_name_4 identified by passwd123456; grant resource any table to user_name_4; grant select any table to user_name_4;
说明:
情形1: 1. 这个用户可以除了不能再在自己用户下新建表外,增删改已有的表、包括删除已有的表。都是可以做的。 2. 当然,其他用户下,什么都做不了(查询都做不了,操作会报错没有权限) 3. 如果要给这个用户下新建对象怎么办呢,自然是只能用其他具有权限的用户(一般是管理员)在这个用户下新建对象就好了,这样,目标用户就可以查询到新的东西了。
关键点就是,这个用户,能在自己用户下搞事情,但是不能新建对象。—— 确实有场景需要这样的。
情形2: 这个用户下可以在自己用户下做任何事情;其他用户下,任何事情都做不了。
情形3: 这个用户可以在数据库上,为所欲为(所有的用户下),毕竟叫做:有了DBA权限。所以,一般不会给这个权限的。
情形4: 这个就是构造一个查询用户的场景,他可以在自己的用户下为所欲为,同时,可以查询全库的数据,但是对于其他用户下的数据,不能做增删改。
总结:
1. 一般情况下,情形2 是我们的需求;情形4 我们也经常需要。
2. 我们可以通过系统表去核查 三个角色(DBA RESOURCE PUBLIC)具体对应哪些具体权限: select * from DBA_SYS_PRIVS ;