如何查询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
相关产品推荐
相关产品推荐

