権限の再付与は、権限を付与する者が集中する問題を解決します。権限付与時に 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)