このトピックでは、ロール権限管理の構文について説明し、構文の使用方法の例を示します。
ネイティブMySQL 8.0と互換性のあるPolarDB-Xのロールベースの権限制御の詳細については、「ロールベースの権限制御」をご参照ください。
ロールの作成
構文:
CREATE ROLE role [, role]...ロール名のコンポーネントは、ユーザー名のコンポーネントと同じです。 各ロール名は、nameパラメーターとHostパラメーターの値で構成されます。
- Nameパラメーターを空のままにすることはできません。
- Hostパラメーターの値は、次のルールを満たす必要があります。
- Hostパラメーターの値はIPアドレスである必要があり、アンダースコア (_) とパーセント記号 (%) を使用できます。 アンダースコア (_) およびパーセント記号 (%) はワイルドカード文字として使用されません。
- Hostパラメーターが空の場合、パーセント記号 (%) を使用してホストを指定します。 パーセント記号 (%) は、完全一致メソッドを使用して照会できます。 パーセント記号 (%) はワイルドカード文字として使用されません。
例:
ROLE 'role_ro' @ '%' 、'role_write' を作成します。ロールの削除
構文:
DROP ROLE role [、role] ...例:
DROP ROLE 'role_ro' @ '%';ロールに権限を付与する
ロールに権限を付与構文:
GRANT priv_type [, priv_type] ... ON priv_level TO role [、role]... [GRANTオプション付き] 例:
すべての特権をdb1. * に 'role_write'; ユーザーにロールを付与構文:
GRANT role [、role] ...
user_or_role [, user_or_role] ...
[アドミンオプション付き] 追加情報:
- 上記のステートメントを実行する前に、次の要件を満たす必要があります。
- ユーザーにCREATE_USER権限があります。
- ユーザーには、ロールに対する管理者権限があります。
- ステートメントにWITH ADMIN OPTIONオプションが含まれている場合、ロールが付与されているユーザーには、ロールに対する管理者権限が付与されます。
- ロールがユーザーに割り当てられたら、ロールを有効にする必要があります。 これにより、ユーザーはロールの必要な権限を持つことができます。 アクティブ化するロールを指定するには、
SET DEFAULT roleおよびSET ROLEステートメントを実行する必要があります。
例:
GRANT 'role_write' TO 'user1' @ '127.0.0.1 '; デフォルトロールの設定構文:
SETデフォルトロール
{NONE | ALL | role [, role ] ...}
TO user [, user ] ... 上記のステートメントを実行する前に、次の要件を満たす必要があります。
- ステートメント内のロールは、GRANTステートメントを実行することによって、指定されたユーザーに割り当てられます。
- ユーザーにロールが割り当てられるか、CREATE_USER権限が付与されます。
例:
SET DEFAULT ROLE 'role_write' TO 'user1' @ '127.0.0.1 '; 接続のロールを設定構文:
SET ROLE {
DEFAULT
| なし
| すべて
| ALL EXCEPT role [, role ] ...
| role [, role ] ...
} 説明
SET ROLE DEFAULTステートメントを実行する場合、アクティブなロールはSET DEFAULT roleステートメントで指定されたロールです。- この構文でアクティブ化されたロールは、現在の接続を使用するユーザーに対してのみ有効です。
例:
SET ROLE 'role_write';;ロールの権限の表示
構文:
ショーグラント
[FOR user_or_role
[USING role [、role] ...] 例:
は 'role_write' @ '%' のGRANTSを表示します。+ --------------------------------------------------- +
| 'ROLE_WRITE' @ '%' のGRANTS |
+ --------------------------------------------------- +
| GRANT USAGE ON *.* TO 'role_write' @ '%' |
| すべての特権をdb1. * に付与 'role_write' @ '%' |
+ --------------------------------------------------- +
「role_write」を使用した「user1」 @ 「127.0.0.1」のプレゼントを表示します。+ ------------------------------------------------------ +
| 'USER1' @ '127.0.0.1 'のGRANTS |
+ ------------------------------------------------------ +
| GRANT USAGE ON *.* TO 'user1' @ '127.0.0.1 '|
| すべての特権をdb1. * から 'user1' @ '127.0.0.1 'に付与 |
| GRANT 'role_write' @ '%' TO 'user1' @ '127.0.0.1 '|
+ ------------------------------------------------------ +
-- user1アカウントを使用してセッションを実行します。
SELECT CURRENT_ROLE();
+ ------------------ +
| CURRENT_ROLE() |
+ ------------------ +
| 'role_write' @ '%' |
+ ------------------ + ロールの取り消し
ロールの権限を取り消す構文:
REVOKE priv_type [, priv_type] ... ON priv_level FROM role [、role]... 例:
db1. * 「role_write' 」からすべての特権を更新します。'role_write' @ '%' のGRANTSを表示します。+ ---------------------------------------- +
| 'ROLE_WRITE' @ '%' のGRANTS |
+ ---------------------------------------- +
| GRANT USAGE ON *.* TO 'role_write' @ '%' |
+ ---------------------------------------- + ユーザーの権限を取り消す構文:
REVOKE role [、role ] ... FROM user_or_role [, user_or_role ] ... 例:
は 'user1' @ '127.0.0.1 'のためのGRANTSを表示します。+ ----------------------------------------------- +
| 'USER1' @ '127.0.0.1 'のGRANTS |
+ ----------------------------------------------- +
| GRANT USAGE ON *.* TO 'user1' @ '127.0.0.1 '|
| GRANT SELECT ON db1. * TO 'user1' @ '127.0.0.1 '|
| GRANT 'role_write' @ '%' TO 'user1' @ '127.0.0.1 '|
+ ----------------------------------------------- +
REVOKE 'role_write' FROM 'user1' @ '127.0.0.1 ';
「user1」 @ 「127.0.0.1」のプレゼントを表示します。+ ---------------------------------------------- +
| 'USER1' @ '127.0.0.1 'のGRANTS |
+ ---------------------------------------------- +
| GRANT USAGE ON *.* TO 'user1' @ '127.0.0.1 '|
| GRANT SELECT ON db1. * TO 'user1' @ '127.0.0.1 '|
+ ---------------------------------------------- +