Как изменить привилегии для пользователя MySQL, который уже создан?


69

Я понимаю, как создать нового пользователя с привилегиями, но как правильно изменить привилегии для пользователей, которые уже созданы?

Мы проводим аудит БД, и у некоторых пользователей есть гораздо больший доступ, чем необходимо. Кроме того, я не знаю пароли для большинства пользователей 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 документация почти не читается, этот ответ гораздо лучше
Тимо Хуовинен

Я думаю (отозвать все привилегии на . У 'user' @ 'host';) должно быть (отозвать все на . От 'user' @ 'host';) Спасибо,
Николас

1
этот ответ совершенно неправильный: «сбросить привилегии» не относится к привилегиям, установленным с помощью grant. Приведенный выше процесс приводит к тому, что пользователь не имеет никаких привилегий между моментом запуска запросов отзыва и предоставления и дополнительно очищает кэш разрешений без всякой причины __ это будет работать, если вы выполняете регулярные запросы к таблице mysql.user, а не использование грантов и если сервер не падает или останавливается между запросами.
skullnobrains
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.