我正在寻找一种方法来识别授予特定数据库中用户的默认权限。我已经尝试过这个:
select *
from dbc.allrights
where username='user-id'
and databasename='database-name'
上述有两个问题;首先,如所写,查询为用户 ID 拥有的每个表的每个权限返回一行,并且它包括专门授予的权限。其次,如果用户 d 根本没有创建任何表,则不会返回任何行。
我希望有另一个 DBC 视图,其中包含用户和数据库的默认权限。
您可以使用此查询来检查用户对不同数据库的访问:
SELECT
A.GRANTEE as ProxyID,B.DATABASENAME,
CASE WHEN B.ACCESSRIGHT = 'D' THEN 'DELETE'
WHEN B.ACCESSRIGHT = 'I' THEN 'INSERT'
WHEN B.ACCESSRIGHT = 'R' THEN 'SELECT'
WHEN B.ACCESSRIGHT = 'SH' THEN 'SHOW TABLE/VIEW'
WHEN B.ACCESSRIGHT = 'U' THEN 'UPDATE' ELSE 'OTHER' END ACCESS_LEVEL
FROM
DBC.ROLEMEMBERS A Join DBC.ALLROLERIGHTS B
ON
A.ROLENAME = B.ROLENAME
WHERE
Grantee='USER_ID' AND B.DATABASENAME IN ('DATABASE1','DATABASE2',.....)
GROUP BY 1,2,3
ORDER BY 1,2,3
希望它可以帮助你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)