リモートホストから接続を取得しようとして、たくさんのGRANTSを実行しました。だから私はしました:
GRANT ALL PRIVILEGES ON *.* TO 'prog'@'foobar-dev.foobar.com' WITH GRANT OPTION;
ただし、「foobar-dev」はもう存在しません。そして、他の存在しないホストのための他のエントリの束があります。
mysql.userのエントリがなくなることを期待して、次のREVOKEを実行しました。
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'prog'@'foobar-dev.foobar.com'.
これにより、mysql.userのすべての列が「prog」@「foobar-dev.foobar.com」の「N」に設定されますが、行を削除する方が適切(かつクリーン)ではないでしょうか。行を削除していません。これは、「何かを壊す」可能性があり、私がよく知らないシステムテーブルの参照整合性に違反する可能性があるためです。しかし、特権を確認するためにmysql.userで選択するたびに、偽のエントリを表示する必要があるのは、気が散るようなものです。私はいつも、システムテーブルは過去の連祷ではなく、現実を反映するべきだと思っていました。
それで、mysql.userは、その中の行を削除しても他のテーブルに悪影響を及ぼさないように「スタンドアロン」ですか?このテーブルを維持する正しい方法は何ですか?
これは何かを壊しますか?
delete from mysql.user where Host = 'foobar-dev.foobar.com' and User = 'prog';
TIA!