如何找到哪些数据库中哪些用户有DBA权限

本文介绍了一种在数据库中查询具有DBA权限用户的简便方法,通过执行特定SQL语句即可获得相关信息,同时还提供了如何查看所有用户及其权限的指导。

                      如何找到哪些用户有DBA权限

 

我们有时候需要找到数据库服务器中,哪些用户具有DBA权限,以便于有关安全与权限管理。
通常可以使用以下简单方法可以得到答案:

选择当前数据库, 执行SQL:

选择当前数据库, 执行SQL:

select * from dba_role_privs where granted_role='DBA';     哪些用户有DBA权限

select * from dba_role_privs;   当前库中所有用户、角色及相应的权限

 

注:在输出的结果中,有关usertype字段的含义如下,就可以找到相应的DBA权限的用户了。

D - DBA
C - CONNECT
R - RESOURCE

alter user SCOTT quota unlimited on users;
来赋予用户某个表空间的使用权

 

<think>好的,我现在需要回答用户关于如何在达梦数据库中查看某个数据库用户权限。首先,我需要回忆达梦数据库权限管理体系。达梦数据库权限分为系统权限、对象权限和角色权限,可能还涉及资源限制和用户状态。 用户的问题是要查看某个用户权限,所以需要确定使用哪些系统视图或SQL语句。达梦的系统视图通常存储在SYSDBA模式下,比如SYSOBJECTS、SYSTABLES,但具体到权限,可能需要查询DBA_SYS_PRIVS、DBA_TAB_PRIVS、DBA_ROLE_PRIVS这些视图。不过,达梦可能有自己的系统视图名称,我需要确认是否正确。 然后,系统权限可能涉及CREATE TABLE、ALTER USER等,对象权限则是针对特定对象的SELECT、INSERT等。角色权限则是用户被授予的角色,角色本身有一组权限。此外,用户的资源限制如连接数、空闲时间也需要考虑,可能存储在DBA_PROFILES或类似的视图中。 接下来,我需要列出具体的步骤。第一步是确认用户是否存在,可以通过查询DBA_USERS。第二步是检查系统权限,可能用DBA_SYS_PRIVS,但达梦可能使用SYSTEM_PRIVILEGES或类似视图。第三步是对象权限,可能需要DBA_TAB_PRIVS。第四步是角色权限,查看用户被授予的角色,再查看角色的权限。第五步是资源限制和状态,比如ACCOUNT_STATUS。 然后,可能需要编写示例SQL语句,比如查询系统权限的SELECT GRANTEE, PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE='用户名'; 但需要注意达梦的实际视图名称是否正确,比如是否用SYSTEM_PRIVILEGES或其他。对象权限可能需要查DBA_TAB_PRIVS,角色权限DBA_ROLE_PRIVS,然后递归查询角色包含的权限。 另外,用户可能需要使用SYSDBA或具有DBA权限用户来执行这些查询,否则可能无法访问这些系统视图。还要考虑版本差异,不同版本的达梦数据库可能有不同的系统表结构,需要确认。 最后,总结步骤,提醒用户注意事项,比如权限查看需要DBA权限,角色权限可能需要递归查询,以及版本兼容性等。</think>在达梦数据库中查看某个用户权限,可通过以下步骤实现: --- ### 一、权限分类 达梦数据库用户权限主要分为: 1. **系统权限**:如 `CREATE TABLE`、`ALTER USER` 等 2. **对象权限**:如表/视图的 `SELECT`、`INSERT` 等 3. **角色权限**:通过角色间接授予的权限集合 4. **资源限制**:如连接数、空闲时间等 --- ### 二、操作步骤 #### 1. 确认用户是否存在 ```sql SELECT * FROM DBA_USERS WHERE USERNAME = '用户名'; ``` #### 2. 查看系统权限 ```sql -- 直接授予用户的系统权限 SELECT GRANTEE, PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE = '用户名'; ``` #### 3. 查看对象权限 ```sql -- 用户直接拥有的对象权限 SELECT OWNER, TABLE_NAME, PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE = '用户名'; ``` #### 4. 查看角色权限 ```sql -- 用户被授予的角色 SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = '用户名'; -- 查看角色包含的权限(需递归查询) SELECT ROLE, PRIVILEGE FROM ROLE_SYS_PRIVS WHERE ROLE = '角色名'; ``` #### 5. 查看资源限制 ```sql SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME LIKE '%LIMIT%' AND PROFILE = (SELECT PROFILE FROM DBA_USERS WHERE USERNAME = '用户名'); ``` --- ### 三、综合查询示例 ```sql -- 查看用户TEST的全部权限 -- 1. 系统权限 SELECT '系统权限' AS 类型, PRIVILEGE AS 权限详情 FROM DBA_SYS_PRIVS WHERE GRANTEE = 'TEST'; -- 2. 对象权限 SELECT '对象权限' AS 类型, OWNER||'.'||TABLE_NAME||'('||PRIVILEGE||')' AS 权限详情 FROM DBA_TAB_PRIVS WHERE GRANTEE = 'TEST'; -- 3. 角色权限 SELECT '角色权限' AS 类型, GRANTED_ROLE AS 权限详情 FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'TEST'; ``` --- ### 四、注意事项 1. 需使用 `SYSDBA` 或具有 `DBA` 权限用户执行查询 2. 角色权限需递归查询(角色可能嵌套其他角色) 3. 达梦不同版本系统表可能有差异(如7.0与8.0) 可通过 `SELECT * FROM V$VERSION;` 确认数据库版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值