DB2の特権と権限
公式見てると特権と権限で混乱する。
- 権限・・・DBADMやSECADM、DATAACCESSなど
- 特限・・・同じみgrant select、grant insertなど
らしい。Oracle界のシステム権限がDB2の権限。Oracle界のオブジェクト権限がDB2界の特権のようだ。 何はともかく確認したいときのシステム・カタログ。
ロールの一覧
SELECT * FROM SYSCAT.ROLES
ロールのメンバー一覧
SELECT * FROM SYSCAT.ROLEAUTH
各テーブルのGRANT(特権)一覧
SELECT * FROM SYSCAT.TABAUTH
各スキーマのGRANT一覧
SELECT * FROM SYSCAT.SCHEMAAUTH
権限一覧
GRANTEEのPUBLICは、全ユーザが対象なので基本的な権限を確認しておいたほうがよい。
SELECT * FROM SYSCAT.DBAUTH
SELECT * FROM SYSIBM.SYSDBAUTH
おまけ
Create Table時に自動で付与されるCONTROL権限
Create table後にSYSCAT.TABAUTHを参照すると、SYSIBMからそのテーブルのCONTROL権限が付与されているのがわかる。CONTROL権限は、そのテーブル操作で必要なコマンドが一式揃っている権限。
Connectの権限
OracleのCREATE SESSION権限にあたるCONNECT権限だが、DB2では、PUBLICに付与されているため設定は不要。
他スキーマに対する権限
DB2ではデフォルトでPUBLICに対しSYSIBMからCREATEIN 特権が付与されているため、だれでも他スキーマにCreate tableできる。