Come posso modificare i privilegi per l'utente MySQL che è già stato creato?


69

Capisco come creare un nuovo utente con privilegi, ma qual è il modo corretto di modificare i privilegi per gli utenti che sono già stati creati?

Stiamo eseguendo un controllo DB e alcuni utenti hanno molto più accesso di quanto sia necessario. Inoltre non conosco le password per la maggior parte di questi utenti MySQL, quindi non voglio cancellarle e crearne di nuove.

Risposte:


107

Per elencare gli utenti:

select user,host from mysql.user;

Per mostrare i privilegi:

show grants for 'user'@'host';

Per modificare i privilegi, prima revocare. Ad esempio:

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

Quindi concedere i privilegi appropriati come desiderato:

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

Infine, svuota:

flush privileges;

La documentazione di MySQL è eccellente:

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


3
Bene senza revoca, saranno i privilegi di pubblico;
Sergey,

7
la documentazione di mysql è quasi illeggibile, questa risposta è molto migliore
Timo Huovinen

Penso che (revoca tutti i privilegi su . Da 'utente' @ 'host';) dovrebbe essere (revoca tutto su . Da 'utente' @ 'host';) Grazie,
Nicholas

1
questa risposta è chiaramente errata "privilegi flush" non si applica ai privilegi impostati con grant. il processo di cui sopra fa sì che l'utente non abbia alcun privilegio tra il momento in cui vengono eseguite le query revoca e quelle di concessione e svuota ulteriormente la cache delle concessioni senza motivo __ questo funzionerebbe se si eseguono query regolari sulla tabella mysql.user anziché utilizzando le sovvenzioni e se il server non si arresta in modo anomalo o si interrompe tra le query.
skullnobrains
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.