You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询DB2数据库中用户的各类权限(执行/管理员/增改等)

查询DB2用户权限列表的实用SQL语句

一、查询系统级权限(如ADMIN类权限)

系统级权限(数据库管理员、安全管理员等)可通过SYSIBMADM.AUTHORIZATION_PRIVILEGES视图查询,该视图涵盖所有用户/角色的系统权限信息:

SELECT 
    GRANTEE, 
    PRIVILEGE_TYPE, 
    IS_GRANTABLE
FROM SYSIBMADM.AUTHORIZATION_PRIVILEGES
WHERE PRIVILEGE_TYPE IN ('DBADM', 'SECADM', 'DATAACCESS', 'ACCESSCTRL')
ORDER BY GRANTEE, PRIVILEGE_TYPE;
  • GRANTEE:被授权的用户/角色名称
  • PRIVILEGE_TYPE:权限类型(DBADM为数据库管理员,SECADM为安全管理员,DATAACCESS为数据访问权限,ACCESSCTRL为权限控制权限)
  • IS_GRANTABLE:该用户是否可将此权限授予他人(YES/NO)

二、查询对象级数据操作权限(INSERT/UPDATE等)

针对表、视图的INSERT、UPDATE、DELETE、SELECT等权限,使用SYSIBMADM.TAB_PRIVILEGES视图:

查询所有用户的INSERT权限

SELECT 
    GRANTEE, 
    TABNAME, 
    TABSCHEMA, 
    PRIVILEGE, 
    IS_GRANTABLE
FROM SYSIBMADM.TAB_PRIVILEGES
WHERE PRIVILEGE = 'INSERT'
ORDER BY GRANTEE, TABSCHEMA, TABNAME;

查询所有用户的UPDATE权限

SELECT 
    GRANTEE, 
    TABNAME, 
    TABSCHEMA, 
    PRIVILEGE, 
    IS_GRANTABLE
FROM SYSIBMADM.TAB_PRIVILEGES
WHERE PRIVILEGE = 'UPDATE'
ORDER BY GRANTEE, TABSCHEMA, TABNAME;

如需同时查看多种数据操作权限,可修改WHERE条件:

SELECT 
    GRANTEE, 
    TABNAME, 
    TABSCHEMA, 
    PRIVILEGE, 
    IS_GRANTABLE
FROM SYSIBMADM.TAB_PRIVILEGES
WHERE PRIVILEGE IN ('INSERT', 'UPDATE', 'DELETE', 'SELECT')
ORDER BY GRANTEE, PRIVILEGE, TABSCHEMA, TABNAME;

三、查询执行权限(EXECUTE,针对存储过程/函数)

存储过程、用户自定义函数的EXECUTE权限通过SYSIBMADM.ROUTINE_PRIVILEGES视图查询:

SELECT 
    GRANTEE, 
    ROUTINENAME, 
    ROUTINESCHEMA, 
    ROUTINETYPE, 
    PRIVILEGE, 
    IS_GRANTABLE
FROM SYSIBMADM.ROUTINE_PRIVILEGES
WHERE PRIVILEGE = 'EXECUTE'
ORDER BY GRANTEE, ROUTINESCHEMA, ROUTINENAME;
  • ROUTINETYPE:对象类型(P为存储过程,F为函数)

四、关联用户列表与权限(结合你已用的SYSIBMADM.AUTHORIZATIONIDS)

若要将已获取的用户列表与权限关联,查看每个用户的所有权限,可使用关联查询:

SELECT 
    a.AUTHID,
    a.AUTHTYPE,
    COALESCE(p.PRIVILEGE_TYPE, t.PRIVILEGE, r.PRIVILEGE) AS PRIVILEGE,
    COALESCE('SYSTEM', CONCAT(t.TABSCHEMA, '.', t.TABNAME), CONCAT(r.ROUTINESCHEMA, '.', r.ROUTINENAME)) AS OBJECT
FROM SYSIBMADM.AUTHORIZATIONIDS a
LEFT JOIN SYSIBMADM.AUTHORIZATION_PRIVILEGES p ON a.AUTHID = p.GRANTEE
LEFT JOIN SYSIBMADM.TAB_PRIVILEGES t ON a.AUTHID = t.GRANTEE
LEFT JOIN SYSIBMADM.ROUTINE_PRIVILEGES r ON a.AUTHID = r.GRANTEE
WHERE COALESCE(p.PRIVILEGE_TYPE, t.PRIVILEGE, r.PRIVILEGE) IS NOT NULL
ORDER BY a.AUTHID, PRIVILEGE, OBJECT;
  • AUTHTYPE:用户类型(U为普通用户,G为组,R为角色)
  • OBJECT:权限对应的对象(系统权限显示SYSTEM,表/视图显示Schema.表名,存储过程/函数显示Schema.对象名)

内容的提问来源于stack exchange,提问作者RAHUL DUTTA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 00:22:30