MySQL 5.1 リファレンスマニュアル :: 4 データベース管理 :: 4.7 MySQL アクセス権限システム :: 4.7.7 権限の変更が反映するタイミング
« 4.7.6 アクセス制御の段階 2: 接続確認

4.7.8 Access denied エラーの原因 »
Section Navigation      [Toggle]
  • 4.7 MySQL アクセス権限システム
  • 4.7.1 権限システムの役割
  • 4.7.2 権限システムの機能
  • 4.7.3 MySQL 提供の権限
  • 4.7.4 MySQL サーバへの接続
  • 4.7.5 アクセス制御の段階 1: 接続確認
  • 4.7.6 アクセス制御の段階 2: 接続確認
  • 4.7.7 権限の変更が反映するタイミング
  • 4.7.8 Access denied エラーの原因
  • 4.7.9 MySQL 4.1 のパスワードハッシュ

4.7.7. 権限の変更が反映するタイミング

mysqld を起動すると、メモリにすべての権限テーブルが読み込まれます。この時点で、内部メモリのテーブルがアクセス制御の効力を施行します。

サーバが権限テーブルをリロードするときは、既存のクライアント接続の権限は次のように発効します。

  • テーブルとカラムの権限での変更はクライアントが次に要求を行なうときに発効する。

  • データベースの権限での変更は、次の USE db_name ステートメントを発行するときに発効する。

    ノート:クライアント アプリケーションは、データベース名をキャッシュしていることがあるため、実際に別のデータベースを変更するか、FLUSH PRIVILEGES ステートメント を実行しないと、権限効力を発揮できない可能性がある。

  • グローバル権限とパスワードでの変更は、次にクライアントが接続するときに発効する。

GRANT, REVOKE, or SET PASSWORD などのステートメントを使用して、間接的に権限テーブルを変更する場合は、サーバがこれらの変更を認識し、その変更があった直後に権限テーブルをメモリへリロードします。

INSERT、UPDATE、DELETE などのステートメントを使用して、直接に権限テーブルを変更する場合は、サーバを再起動するか、またはテーブルのリロードを行なうまでその権限チェックは施行しません。手動で権限テーブルをリロードするには、FLUSH PRIVILEGES ステートメントを発行するか、mysqladmin flush-privileges または mysqladmin reload コマンドを実行します。

権限テーブルを直接変更したけれど、リロードを忘れたという場合、単に、サーバを再起動するまで、その効果は発揮しません。変更したにも関わらず、その効果がないようなときは、再起動することをお勧めします。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates