SYS権限でログイン
※「as sysdba」をつける必要あり
sqlplus sys/{パスワード}@{ネットサービス名} as sysdba
権限を確認
※確認したいユーザーでログインして実行すること
※USERをDBAにするとデータベース内のすべてを参照
--ロール SELECT * FROM USER_ROLE_PRIVS; --システム権限 SELECT * FROM USER_SYS_PRIVS; --オブジェクト権限 SELECT * FROM USER_TAB_PRIVS;
ロール付与
※ロールとは権限をまとめたもの
GRANT {権限} TO {ユーザー名}; GRANT CONNECT TO {ユーザー名}; --一般ユーザー用のシステム権限(CREATE TABLE等) GRANT RESOURCE TO {ユーザー名}; --開発者のシステム権限(CREATE TRIGGER等) GRANT EXP_FULL_DATABASE TO {ユーザー名}; --エクスポート権限 GRANT IMP_FULL_DATABASE TO {ユーザー名}; --インポート権限 --ロールの中身を確認 SELECT * FROM ROLE_SYS_PRIVS WHERE ROLE = '{ロール名}';
権限付与
※ANYを省くと自スキーマのみ対象になる
GRANT {権限} TO {ユーザー名}; --基本系 GRANT CREATE SESSION TO {ユーザー名}; --データベース接続権限 GRANT UNLIMITED TABLESPACE TO {ユーザー名};--すべての表領域に対し、無制限の領域割り当て --操作系 GRANT SELECT ANY TABLE TO {ユーザー名}; --Select GRANT INSERT ANY TABLE TO {ユーザー名}; --Insert GRANT DELETE ANY TABLE TO {ユーザー名}; --Delete GRANT UPDATE ANY TABLE TO {ユーザー名}; --Update --作成系 GRANT CREATE ANY TABLE TO {ユーザー名}; --テーブル GRANT CREATE ANY VIEW TO {ユーザー名}; --ビュー GRANT CREATE ANY MATERIALIZED VIEW TO {ユーザー名}; --マテビュー GRANT CREATE ANY PROCEDURE TO {ユーザー名}; --プロシージャ GRANT CREATE ANY SEQUENCE TO {ユーザー名}; --シーケンス GRANT CREATE ANY SYNONYM TO {ユーザー名}; --シノニム GRANT CREATE ANY INDEX TO {ユーザー名}; --インデックス --削除系 GRANT DROP ANY TABLE TO {ユーザー名}; --テーブル GRANT DROP ANY VIEW TO {ユーザー名}; --ビュー GRANT DROP ANY MATERIALIZED VIEW TO {ユーザー名}; --マテビュー GRANT DROP ANY PROCEDURE TO {ユーザー名}; --プロシージャ GRANT DROP ANY SEQUENCE TO {ユーザー名}; --シーケンス GRANT DROP ANY SYNONYM TO {ユーザー名}; --シノニム GRANT DROP ANY INDEX TO {ユーザー名}; --インデックス --変更系 GRANT ALTER ANY TABLE TO {ユーザー名}; --テーブル GRANT ALTER ANY VIEW TO {ユーザー名}; --ビュー GRANT ALTER ANY MATERIALIZED VIEW TO {ユーザー名}; --マテビュー GRANT ALTER ANY PROCEDURE TO {ユーザー名}; --プロシージャ GRANT ALTER ANY SEQUENCE TO {ユーザー名}; --シーケンス GRANT ALTER ANY SYNONYM TO {ユーザー名}; --シノニム GRANT ALTER ANY INDEX TO {ユーザー名}; --インデックス○ --実行系 GRANT EXECUTE ANY PROCEDURE TO {ユーザー名}; --プロシージャ
権限剥奪
REVOKE {権限} FROM {ユーザ名};