¿Cómo cambio los privilegios para el usuario de MySQL que ya está creado?

69

Entiendo cómo crear un nuevo usuario con privilegios, pero ¿cuál es la forma correcta de cambiar los privilegios para los usuarios que ya están creados?

Estamos realizando una auditoría de base de datos y algunos de los usuarios tienen mucho más acceso del que se necesita. Además, no conozco las contraseñas para la mayoría de estos usuarios de MySQL, por lo que no quiero eliminarlas y crear otras nuevas.

Embrague
fuente

Respuestas:

107

Para enumerar usuarios:

select user,host from mysql.user;

Para mostrar privilegios:

show grants for 'user'@'host';

Para cambiar los privilegios, primero revoque. Como:

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

Luego otorgue los privilegios apropiados que desee:

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

Finalmente, enjuague:

flush privileges;

La documentación de MySQL es excelente:

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

Warner
fuente
3
Bueno, sin revocación, se duplicarán los privilegios;
Sergey
77
la documentación de mysql es casi ilegible, esta respuesta es mucho mejor
Timo Huovinen
Creo que (revocar todos los privilegios en . De 'user' @ 'host';) debería ser (revocar todo en . De 'user' @ 'host';) Gracias,
Nicholas
1
esta respuesta es simplemente errónea "privilegios de descarga" no se aplica a los privilegios establecidos con concesión. el proceso anterior da como resultado que el usuario no tenga ningún privilegio entre el momento en que se ejecutan las consultas de revocación y concesión, y adicionalmente vaciar el caché de concesiones sin ningún motivo __ esto funcionaría si realiza consultas regulares contra la tabla mysql.user en lugar de usando concesiones y si el servidor no se bloquea o se detiene entre las consultas.
skullnobrains