Як змінити вже створені привілеї для користувача 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
ця відповідь очевидно неправильна, "привілеї флеш" не застосовуються до привілеїв, встановлених грантом. вищезазначений процес призводить до того, що користувач взагалі не має привілеїв між моментом запуску відкликання та грант-запитів, а також додатково очищає кеш грантів без причини __ це буде працювати, якщо ви виконувати регулярні запити проти таблиці mysql.user, а не з використанням грантів, і якщо сервер не виходить з ладу або зупиняється між запитами.
черепномозги
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.