Db2 отзывает пользовательские привилегии из базы данных у нескольких пользователей - PullRequest
0 голосов
/ 28 октября 2019

Я хочу отозвать все привилегии у всех пользователей, кроме одной из базы данных. Db2 10,5 LUW

Я думал так:

 db2 "revoke all on database from user IN (select grantee from syscat.dbauth where grantee not IN 'SAFEUSER')"

, но я не могу заставить его работать.

Есть идеи?

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 28 октября 2019

В операторе REVOKE (права доступа к базе данных) .
отсутствует предложение ALL. Вы можете сгенерировать набор операторов, необходимый для следующего оператора выбора:

select 
  'REVOKE '
|| SUBSTR 
(
  CASE ACCESSCTRLAUTH WHEN 'N' THEN '' ELSE ', ACCESSCTRL' END 
||CASE BINDADDAUTH WHEN 'N' THEN '' ELSE ', BINDADD' END 
||CASE CONNECTAUTH WHEN 'N' THEN '' ELSE ', CONNECT' END 
--- add here expressions with all other *AUTH columns
, 2)
||' ON DATABASE FROM ' 
|| CASE 
     WHEN GRANTEE = 'PUBLIC' THEN ''
     WHEN GRANTEETYPE = 'U' THEN 'USER' 
     WHEN GRANTEETYPE = 'G' THEN 'GROUP' 
     WHEN GRANTEETYPE = 'R' THEN 'ROLE' 
   END
||' '||GRANTEE
from syscat.dbauth
WHERE 'Y' IN 
(
ACCESSCTRLAUTH, BINDADDAUTH, CONNECTAUTH
--- add here all other *AUTH columns separated by ','
)
AND  grantee <> 'SAFEUSER'
;
...