Jak zmienić uprawnienia dla użytkownika MySQL, który został już utworzony?

69

Rozumiem, jak utworzyć nowego użytkownika z uprawnieniami, ale jaki jest właściwy sposób zmiany uprawnień dla już utworzonych użytkowników?

Przeprowadzamy audyt DB i niektórzy użytkownicy mają znacznie większy dostęp niż jest to potrzebne. Ponadto nie znam haseł dla większości użytkowników MySQL, więc nie chcę ich usuwać i tworzyć nowych.

Sprzęgło
źródło

Odpowiedzi:

107

Aby wyświetlić listę użytkowników:

select user,host from mysql.user;

Aby pokazać uprawnienia:

show grants for 'user'@'host';

Aby zmienić uprawnienia, najpierw odwołaj. Jak na przykład:

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

Następnie nadaj odpowiednie uprawnienia zgodnie z potrzebami:

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

Na koniec spłucz:

flush privileges;

Dokumentacja MySQL jest doskonała:

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

Warner
źródło
3
Cóż, bez odwołania, będą upubliczniać przywileje;
Siergiej
7
Dokumentacja mysql jest prawie nieczytelna, ta odpowiedź jest znacznie lepsza
Timo Huovinen
Myślę, że (cofnij wszystkie przywileje . Z „użytkownika” @ „hosta”;) powinno być (odwołaj wszystkie . Z „użytkownika” @ „hosta”;) Dzięki,
Nicholas
1
ta odpowiedź jest błędna „przywileje opróżniania” nie mają zastosowania do przywilejów ustawionych z przyznaniem. powyższy proces powoduje, że użytkownik nie ma żadnych uprawnień między momentem odwołania odwołania i przyznania grantu, a dodatkowo opróżnianie pamięci podręcznej grantów bez powodu _ działałoby, gdybyś wykonywał regularne zapytania względem tabeli mysql.user zamiast za pomocą dotacji i jeśli serwer nie ulega awarii lub zatrzymuje się między zapytaniami.
skullnobrains