1

リモートホストから接続を取得しようとして、たくさんの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!

4

1 に答える 1

0

大丈夫なはずです。パーミッションを取り消してから mysql.user から削除することは、ドロップ ユーザーが利用可能になる前に提案された方法でした。最近のバージョンの mysql を使用drop user 'prog'@'foobar-dev.foobar.com';している場合は、将来的に権限を取り消してユーザー テーブルから削除するために使用できます。http://dev.mysql.com/doc/refman/5.0/en/drop-user.htmlを参照してください

于 2012-04-15T18:57:00.297 に答える