Usuarios y permisos MySQL

12 Octubre 2011 at 12:55 by Adrián Pérez

MysqlYa he escrito algunos posts donde se ha hablado un poco de la administración de usuarios y permisos en MySQL como éste o éste otro. Sin embargo, voy a resumir en un breve post la administración de usuarios y permisos de MySQL.
Podemos ver los usuarios que tenemos en el mysql con el siguiente comando:

mysql> select * from mysql.user;

Esto nos mostrará todos los usuarios definidos en mysql, separando además los usuarios por host (si tenemos un usuario user@localhost y el mismo usuario para acceder desde cualquier host user@'%', aparecerán dos líneas para este usuario.

Para conocer los permisos que tiene un determinado usuario, se podrá usar:

mysql> show grants for user@'host'

Por ejemplo: mysql> show grants for user@'%'

Si se quiere añadir, por ejemplo, el permiso ALTER a la lista de permisos que ya tiene el usuario user@'%', se podrá usar el siguiente comando:

mysql> grant alter on *.* to user@'%'

Nota: en este caso, *.* corresponde a la base de datos a la cual se le aplicarán los permisos para el usuario (*.* = todas las bases de datos).
Actualización: si se quiere dar el permiso ALTER sólo para una base de datos concreta, se puede usar la sentencia grant alter on `bbdd`.* TO 'user'@'host';

Tras modificar los permisos de un usuario, podría ser posible que se necesitara ejecutar un "flush privileges", sin embargo, en ocasiones esto no es necesario.

Finalmente, se podrá eliminar un usuario@host sin eliminar al mismo usuario para otro host, de la siguiente manera:

mysql>drop user user@'%';

La instrucción anterior eliminaría al usuario user@% pero no eliminaría a user@localhost.

Fuentes: http://kb.mediatemple.net/questions/788/HOWTO%3A+GRANT+privileges+in+MySQL#dv
http://serverfault.com/questions/117525/how-can-i-show-users-privileges-in-mysql