データ制御言語
メニューを表示するにはスワイプしてください
データ制御言語(DCL)は、リレーショナルデータベース管理システムに保存されたデータへのアクセス制御を行うためのSQLのサブセット。 DCLコマンドは主に、テーブル、ビュー、スキーマなどのデータベースオブジェクトに対する権限の付与や取り消しに関係。
DCLコマンド
主なDCLコマンドは次の2つ:
-
GRANT:特定の権限をユーザーまたはロールに付与するコマンド; -
REVOKE:以前に付与された特定の権限をユーザーまたはロールから取り消すコマンド。
権限
オブジェクト
実装
SQLで特定のユーザーにオブジェクトの権限を付与するには、次のステートメントを使用:
GRANT privileges
ON object
TO {user | role | PUBLIC};
DBで権限を付与できるロールには3種類:
- user:個々のデータベースユーザー;
- role:データベースロール。ユーザーに割り当て可能な権限の名前付きグループ(例:admin、developer、analyst);
- PUBLIC:すべてのユーザーに指定した権限を付与する特別なキーワード。
ロールをユーザーに付与するには、次のステートメントを使用:
GRANT role TO user;
最後に、以前付与した権限を取り消すには、次のステートメントを使用:
REVOKE privileges
ON object
FROM {user | role | PUBLIC};
例
GRANT コマンドを使用して、bankaccounts および userlogs テーブルに対して異なる権限を異なるロールやユーザーに割り当てる方法の例。
-- Create role
CREATE ROLE bank_manager;
-- Grant privileges to bank_manager role
GRANT SELECT, INSERT, UPDATE, DELETE ON BankAccounts TO bank_manager;
GRANT SELECT, INSERT ON UserLogs TO bank_manager;
-- Create users
CREATE USER john WITH PASSWORD 'password123';
CREATE USER jane WITH PASSWORD 'password456';
-- Assign roles to users
GRANT bank_manager TO john;
GRANT bank_manager TO jane;
次に、付与した権限の一部を取り消すことができます:
-- Revoke privileges from bank_manager role
REVOKE UPDATE, DELETE ON BankAccounts FROM bank_manager;
REVOKE INSERT ON UserLogs FROM bank_manager;
-- Revoke bank_manager role from john
REVOKE bank_manager FROM john;
すべて明確でしたか?
フィードバックありがとうございます!
セクション 3. 章 5
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 3. 章 5