権限の委任は、権限付与者が集中するという問題を解決します。権限付与時に with admin/grant option を指定することで、ユーザーに対し、その権限を他のユーザーに委任する権限も同時に付与できます。ユーザーのオブジェクト権限またはシステム権限を回収する際、そのユーザーが委任した権限は連鎖的に回収されません。
権限委任の例
権限委任失敗の例
rootユーザーでクラスタのMySQLテナントにログインします。
ユーザーAを作成して権限を付与しますが、
with grant optionパラメータは追加しません。obclient> GRANT ALL PRIVILEGES ON *.* TO A IDENTIFIED BY '******'; Query OK, 0 rows affected (0.034 sec)Aユーザーでクラスタにログインし、ユーザーBを作成してAユーザーと同じ権限を付与しますが、エラーが発生します。
obclient> GRANT ALL PRIVILEGES ON *.* TO 'B' IDENTIFIED BY '******'; ERROR 1227 (42501): Access denied; you need (at least one of) the GRANT privilege(s) for this operation注意
ユーザーに権限を付与する際にこの
with grant optionパラメータを含めない場合、その権限は他のユーザーに伝達・付与できません
権限委任成功の例
rootユーザーでクラスタのMySQLテナントにログインします。
Aユーザーに権限を付与し、
with grant optionパラメータを追加します。例:obclient> GRANT ALL PRIVILEGES ON *.* TO A with grant option;Aユーザーでクラスタにログインし、Aユーザーが作成したBユーザーにAユーザーと同じ権限を付与すると、権限付与に成功したというメッセージが表示されます。
obclient> GRANT ALL PRIVILEGES ON *.* TO 'B' IDENTIFIED BY '******'; Query OK, 0 rows affected (0.058 sec)