Wie ändere ich die Berechtigungen für MySQL-Benutzer, die bereits erstellt wurden?

69

Ich verstehe, wie ein neuer Benutzer mit Berechtigungen erstellt wird, aber wie können Berechtigungen für Benutzer, die bereits erstellt wurden, korrekt geändert werden?

Wir führen ein DB-Audit durch und einige Benutzer haben weitaus mehr Zugriff als nötig. Außerdem kenne ich die Passwörter für die meisten dieser MySQL-Benutzer nicht, deshalb möchte ich sie nicht löschen und neue erstellen.

Kupplung
quelle

Antworten:

107

So listen Sie Benutzer auf:

select user,host from mysql.user;

So zeigen Sie Berechtigungen an:

show grants for 'user'@'host';

Um die Berechtigungen zu ändern, müssen Sie zuerst widerrufen. Sowie:

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

Gewähren Sie dann die gewünschten Berechtigungen:

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

Zum Schluss spülen:

flush privileges;

Die MySQL-Dokumentation ist hervorragend:

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

Warner
quelle
3
Nun, ohne zu widerrufen, wird es Privilegien dublizieren;
Sergey
7
MySQL-Dokumentation ist fast unlesbar, diese Antwort ist viel besser
Timo Huovinen
Ich denke (widerrufe alle Privilegien an . Von 'Benutzer' @ 'Host';) sollte (widerrufe alle an . Von 'Benutzer' @ 'Host';) sein Danke,
Nicholas
1
Diese Antwort ist einfach falsch. "Flush-Berechtigungen" gilt nicht für Berechtigungen, die mit "Grant" festgelegt wurden. Der obige Prozess hat zur Folge, dass der Benutzer zwischen der Ausführung der Abfragen zum Widerruf und zum Gewähren überhaupt keine Berechtigungen hat. Außerdem wird der Gewährungscache ohne Grund geleert. Dies würde funktionieren, wenn Sie regelmäßige Abfragen für die Tabelle mysql.user ausführen Verwendung von Zuschüssen und wenn der Server zwischen den Abfragen nicht abstürzt oder anhält.
Skullnobrains