如何检查用户的 DB2 SYSADM 或 SYSCTRL 授权。
我需要通过 DB2 权限来验证用户/密码来创建/删除数据库。有什么具体的命令吗?
我需要使用一个命令验证用户/密码,该命令告诉用户是否有权创建和删除数据库(意味着在触发数据库创建命令之前尝试验证)。
db2 connect
db2 get authorizations
这就是我在 unix shell 中的做法,适应 java 等价物应该不难;
createdb=$(db2 get authorizations|egrep 'SYSADM|SYSCTRL' | grep -c ' = YES')
if [[ $createdb ]]; then
echo 'Do it'
fi
试试这个; 这暗示 ID 在下面查询中引用的视图上具有 SELECT ;
select 1 from
sysibmadm.dbmcfg t1 join
sysibmadm.authorizationids t2 on t1.value=t2.authid
where t1.name='sysadm_group' fetch first row only
with ur
上述查询中的 SQL0551 也表明连接的用户没有 SYSADM。
"GET AUTHORIZATIONS"
命令在版本 9.7 中停止。
"AUTH_LIST_AUTHORITIES_FOR_AUTHID"
应该使用表函数。
db2 connect
db2 SELECT VARCHAR(AUTHORITY, 30) AS AUTHORITY,
D_USER,
D_GROUP,
D_PUBLIC,
ROLE_USER,
ROLE_GROUP,
ROLE_PUBLIC,
D_ROLE
FROM TABLE(SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID('ALICE', 'U'))
WHERE AUTHORITY = 'SYSADM' OR AUTHORITY = 'DBADM'