de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
 kojow7
kojow7
質問

MySQL の Flush Privileges が本当に必要なときは?

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

CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON mydb.* TO [email protected] IDENTIFIED BY "mypassword";

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

FLUSH PRIVILEGES`コマンドが本当に必要なのはどんなときで、不要なのはどんなときでしょうか?

45 2016-04-06T23:14:55+00:00 3
 codeforester
codeforester
編集された質問 26日 6月 2019 в 2:15
プログラミング
mysql
この質問には 1 つの答え があり、読むには ログイン してください。
解決策・回答
 Sanj
Sanj
6日 4月 2016 в 11:29
2016-04-06T23:29:27+00:00
さらに
ソース
編集
#30336230

GRANT オプションで割り当てられた特権は、FLUSH PRIVILEGES を必要とせず、MySQL サーバはこれらの変更に気づき、グラント テーブルを直ちに再読み込みします。

MySQLドキュメントより。

以下のようなステートメントを使用してグラントテーブルを直接変更した場合は、次のようになります。 INSERT、UPDATE、DELETE などのステートメントを使用してグラントテーブルを直接変更した場合、その変更は特権のチェックに影響しません。 テーブルを再読み込みするように指示するまで、権限チェックに影響を与えません。 テーブルを再読み込みするように指示します。グラントテーブルを直接変更したが、リロードを忘れてしまった場合は テーブルをリロードするのを忘れてしまった場合、サーバーを再起動するまで変更は反映されません。これは 疑問に思われるかもしれません。

サーバーにグラントテーブルの再読み込みを指示するには、以下のコマンドを実行してください。 flush-privilegesを実行してください。これはFLUSHコマンドを発行することで可能です。 PRIVILEGES ステートメントを発行するか、mysqladmin flush-privileges または次のコマンドを実行します。 mysqladmin reload コマンド。

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

 Sanj
Sanj
編集した答え 6日 4月 2016 в 11:35
61
0
 simhumileco
simhumileco
7日 11月 2017 в 10:41
2017-11-07T10:41:26+00:00
さらに
ソース
編集
#30336233

TL;DR。

FLUSH PRIVILEGES;は、INSERT,UPDATE,DELETE` などのステートメントを使用してグラントテーブルを直接変更する場合にのみ使用する必要があります。

 codeforester
codeforester
編集した答え 25日 6月 2019 в 6:42
20
0
 cristi148
cristi148
26日 6月 2017 в 10:37
2017-06-26T10:37:10+00:00
さらに
ソース
編集
#30336232

いくつか例を挙げてみましょう。例えば、'alex'というユーザーのパスワードを変更するとします。このパスワードはいくつかの方法で変更できます。例えば、以下のようになります。

mysql> update* user set password=PASSWORD('test!23') where user='alex'; 
mysql> flush privileges;

ここではUPDATEを使用しています。グラントテーブルに直接INSERT、UPDATE、DELETEを使用した場合、グラントテーブルを再読み込みするためにFLUSH PRIVILEGESを使用する必要があります。

または、次のようにパスワードを変更することもできます。

mysql> set password for 'alex'@'localhost'= password('test!24');

ここでは、"FLUSH PRIVILEGES;&quotを使用する必要はありません。 GRANT、REVOKE、SET PASSWORD、RENAME USERなどのアカウント管理文を使って間接的にグラントテーブルを変更した場合、サーバーはその変更に気付き、グラントテーブルをすぐにメモリにロードし直します。

6
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Галина Утяшова
登録済み 10時間前
2
Asilbek Qadamboyev
登録済み 3日前
3
Akshit Mehta
登録済み 6日前
4
me you
登録済み 1週間前
5
Никита иванов
登録済み 1週間前
ID
JA
KO
RU
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属