作成済みのMySQLユーザーの特権を変更するにはどうすればよいですか?


69

特権を持つ新しいユーザーを作成する方法は理解していますが、既に作成されているユーザーの特権を変更する正しい方法は何ですか?

DB監査を実行しており、一部のユーザーは必要以上に多くのアクセス権を持っています。さらに、これらのほとんどのMySQLユーザーのパスワードがわからないため、それらを削除して新しいパスワードを作成したくありません。

回答:


107

ユーザーをリストするには:

select user,host from mysql.user;

特権を表示するには:

show grants for 'user'@'host';

特権を変更するには、最初に取り消します。といった:

revoke all privileges on *.* from 'user'@'host';

次に、必要に応じて適切な特権を付与します。

grant SELECT,INSERT,UPDATE,DELETE ON `db`.* TO 'user'@'host';

最後に、フラッシュ:

flush privileges;

MySQLのドキュメントは優れています。

https://dev.mysql.com/doc/refman/8.0/en/access-control.html


3
取り消すことなく、それは二重特権になります。
セルゲイ

7
MySQLのドキュメントは、この答えははるかに優れている、近く読み取れない
ティモHuovinen

私は(上のすべての権限を取り消すと思います(すべての取り消すべきである;「ホスト」@ 'ユーザから)「ホスト」@「ユーザー」から;)おかげで、
ニコラス

1
この答えは明白です。「フラッシュ権限」は、グラントで設定された権限には適用されません。上記のプロセスにより、ユーザーは失効および付与クエリが実行される間、特権をまったく持たなくなり、さらに理由なしに付与キャッシュをフラッシュします。これは、mysql.userテーブルに対して通常のクエリを実行する場合ではなく、許可を使用し、サーバーがクエリ間でクラッシュまたは停止しない場合。
頭蓋骨頭
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.