1. ホーム
  2. mysql

[解決済み] MySQL MySQLのFlush Privilegesはいつ本当に必要なのか?

2022-03-12 23:30:41

質問

新しいテーブルとそれに付随するユーザーを作成する場合、私は通常、以下のコマンドを実行するだけです。

CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY "mypassword";

を利用する必要があったことは一度もありません。 FLUSH PRIVILEGES コマンドを発行した後です。ユーザーはログインしてデータベースを使用し、データベースに接続するPHPスクリプトを問題なく実行することができます。しかし、私が見るほとんどすべてのチュートリアルで、このコマンドが使われているのを見かけます。

は、いつ FLUSH PRIVILEGES コマンドは本当に必要で、いつ不要になるのでしょうか?

どのように解決するのですか?

GRANT オプションで割り当てられた特権は、FLUSH PRIVILEGES を適用する必要はありません - MySQL サーバがこれらの変更に気付き、直ちにグラントテーブルをリロードします。

MySQLドキュメントより :

のようなステートメントを使用して直接グラント・テーブルを変更した場合、そのテーブルを使用することができます。 INSERT、UPDATE、DELETE を実行しても、その変更は特権に影響を及ぼさない。 サーバーを再起動するか、サーバーに再読み込みを指示するまで テーブルを使用します。グラント・テーブルを直接変更したが、リロードするのを忘れた場合 の場合、サーバーを再起動するまで変更は無効です。このため なぜ、このような変更を行ったのに、何も変わらないのかと不思議に思うかもしれません。

グラント・テーブルを再読み込みするようにサーバーに指示するには、次のコマンドを実行します。 フラッシュプリビレッジ操作です。これは、FLUSH PRIVILEGES ステートメントを実行するか、mysqladmin flush-privileges または mysqladmin reloadコマンドを実行します。

アカウント管理を使用して間接的にグラントテーブルを変更する場合 GRANT、REVOKE、SET PASSWORD、または RENAME USER などのステートメントを使用すると サーバーはこれらの変更に気付き、グラント・テーブルをメモリにロードします。 を直ちに再作成します。