达梦用户的权限配置,达梦,权限,用户权限,配置
dm
这里所有的内容基于下面的版本,后期随着版本可能有改动。
select * from v$version;
--DM Database Server x64 V7.6.0.96-Build(2018.09.19-97292)ENT
注意
角色就是一系列权限的集合,是方便用户操作的一个方式,因为把很多的权限(如很多表的查询权限,或者其他权限等)打包到一个角色中,后面要授予某个用户所有这些权限,只需要【grant
角色 to 用户】就可以了。达梦数据库默认有三个角色:DBA、RESOURCE、PUBLIC 三个角色。
DBA 角色中,是系统全部权限的即可,授予了 DBA,就是数据库系统中的老大了。
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: 这个就是构造一个查询用户的场景,他可以在自己的用户下为所欲为,同时,可以查询全库的数据,但是对于其他用户下的数据,不能做增删改。
总结:
一般情况下,情形2 是我们的需求;情形4 我们也经常需要。如果我们需要新建一个用户,只能查询特定的表,可以参考本文后半部分。
我们可以通过系统表去核查 三个角色(DBA RESOURCE PUBLIC)具体对应哪些具体权限: select * from DBA_SYS_PRIVS ;
【DM-用户权限配置】权限 控制 如何 让 一个 用户 只能 访问一个表 且 看不到 其他 模式 下的 表 数据库 用户 权限控制 manager 看到的表 控制.rst¶
现象描述
注意
如果要给一个用户全库的查询权限,grant select any table to your_username; 就可以了
如果只想给特定表的权限,参考后文即可。
希望有一个用户,只能看到自己模式下的表,而看不到其他模式下的表
或者控制一个用户只能看到自己制定表的权限。
应当如何配置权限?
—— 核心是 revoke public from user_test
处理方法
这里是一个例子:如何创建一个用户,只能看到指定的表。
–这个脚本用sysdba执行
create table sysdba.test (v1 int);
drop user test_u;
create user test_u identified by 111111111;
revoke public from test_u;
grant select on v$instance to test_u;
grant select on V$MPP_CFG_ITEM to test_u;
grant select on V$DATABASE to test_u;
grant select on V$DM_INI to test_u;
grant select on V$VERSION to test_u;
-- weblogic 11g test need 2019/9/11 16:59:22
备注:如果是17年的dmserver,就跳过这些步骤,直接
grant select on 你希望的它能查询的表 to aim_user_name;
就行了
因为,以前的版本,系统字典的权限是 dmserver 内置用户 sys的,
sysdba也不能(也没办法)控制,也就是 sysdba 也无法 revoke 和 grant 字典表的权限,
sysdba 不用管(也没法管)字典表的权限
grant select on test to test_u;
此时,用 test_u 登录manager,左侧导航栏则是能看到test 这个表
这里是相关的例子
可以这么做的一个缘由
-- sysdba 跑的
create table test_1 (v1 int);
insert into test_1 select level connect by level<=100;
create view test_v as select v1 from test_1 where v1<3;
grant select on test_v to test_u;
-- test_u 查的
select * from sysdba.test_v; --ok
select * from sysdba.test_1; -- 没有\[TEST_1\]对象的查询权限
…Notice::
select table 和 select any table 包括insert delete 等,所有不带any的描述的都是,自己用户下的权限。
This document was generated on 2021-05-12 at 23:50.
转载至:https://dms1101.gitee.io/dms/manager%EF%BC%88%E5%90%ABsql%E7%9A%84%E4%BD%BF%E7%94%A8%EF%BC%89%E9%83%A8%E5%88%86/%E3%80%90DM-%E7%94%A8%E6%88%B7%E6%9D%83%E9%99%90%E9%85%8D%E7%BD%AE%E3%80%91%E6%9D%83%E9%99%90%20%E6%8E%A7%E5%88%B6%20%E5%A6%82%E4%BD%95%20%E8%AE%A9%20%E4%B8%80%E4%B8%AA%20%E7%94%A8%E6%88%B7%20%E5%8F%AA%E8%83%BD%20%E8%AE%BF%E9%97%AE%E4%B8%80%E4%B8%AA%E8%A1%A8%20%E4%B8%94%20%E7%9C%8B%E4%B8%8D%E5%88%B0%20%E5%85%B6%E4%BB%96%20%E6%A8%A1%E5%BC%8F%20%E4%B8%8B%E7%9A%84%20%E8%A1%A8%20%E6%95%B0%E6%8D%AE%E5%BA%93%20%E7%94%A8%E6%88%B7%20%E6%9D%83%E9%99%90%E6%8E%A7%E5%88%B6%20manager%20%E7%9C%8B%E5%88%B0%E7%9A%84%E8%A1%A8%20%E6%8E%A7%E5%88%B6.html
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)