MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

5.1.9.1 システム変数権限

システム変数には、サーバー操作全体に影響するグローバル値、現在のセッションのみに影響するセッション値、またはその両方を指定できます:

このセクションでは、実行時にシステム変数に値を割り当てる操作に必要な権限について説明します。 これには、ランタイム値に影響する操作と、値を永続化する操作が含まれます。

グローバルシステム変数を設定するには、適切なキーワードを指定した SET ステートメントを使用します。 次の権限が適用されます:

永続化されたグローバルシステム変数を mysqld-auto.cnf ファイルから削除するには、RESET PERSIST ステートメントを使用します。 次の権限が適用されます:

グローバルシステム変数に前述の権限要件に対する例外がある場合、変数の説明にそれらの例外が示されます。 例として、追加の権限を必要とする default_table_encryptionmandatory_roles があります。 これらの追加権限は、グローバルランタイム値を設定する操作には適用されますが、値を永続化する操作には適用されません。

セッションシステム変数のランタイム値を設定するには、SET SESSION ステートメントを使用します。 グローバルランタイム値の設定とは対照的に、セッションランタイム値の設定には通常、特別な権限は必要なく、すべてのユーザーが現在のセッションに影響を与えることができます。 一部のシステム変数では、セッション値を設定すると現在のセッションの外部に影響を与える可能性があるため、特殊な権限を持つユーザーのみが実行できる制限付き操作です:

セッションシステム変数が制限されている場合、変数の説明にその制限が示されます。 たとえば、binlog_formatsql_log_bin などです。 これらの変数のセッション値を設定すると、現在のセッションのバイナリロギングに影響しますが、サーバーレプリケーションおよびバックアップの整合性にも大きな影響を与える可能性があります。

SESSION_VARIABLES_ADMIN を使用すると、管理者は、制限付きセッションシステム変数を変更できるようにするために、以前に SYSTEM_VARIABLES_ADMIN または SUPER を付与されたユーザーの権限フットプリントを最小限に抑えることができます。 管理者が、制限付きセッションシステム変数を設定する機能を付与するために、次のロールを作成したとします:

CREATE ROLE set_session_sysvars;
GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO set_session_sysvars;

set_session_sysvars ロールを付与されたユーザー (およびそのロールがアクティブなユーザー) は、制限付きセッションシステム変数を設定できます。 ただし、そのユーザーはグローバルシステム変数を設定することもできますが、これは望ましくない場合があります。

SYSTEM_VARIABLES_ADMIN のかわりに SESSION_VARIABLES_ADMIN を使用するようにロールを変更することで、ロール権限を制限されたセッションシステム変数を設定する機能まで減らすことができます。 ロールを変更するには、次のステートメントを使用します:

GRANT SESSION_VARIABLES_ADMIN ON *.* TO set_session_sysvars;
REVOKE SYSTEM_VARIABLES_ADMIN ON *.* FROM set_session_sysvars;

ロールを変更するとすぐに有効になります: set_session_sysvars ロールを付与されたアカウントには SYSTEM_VARIABLES_ADMIN がなく、その権限が明示的に付与されないかぎりグローバルシステム変数を設定できません。 同様の GRANT/REVOKE 順序は、ロールによってではなく、SYSTEM_VARIABLES_ADMIN が直接付与されたアカウントに適用できます。