MySQL. Gestión de permisos y usuarios

El sistema de privilegios de MySQL se encarga de establecer quién puede conectar al servidor y qué operaciones puede realizar.

Nuestra identidad se determina mediante el equipo desde el que nos conectamos y el nombre de usuario que especifiquemos. Por ejemplo: root@’localhost’

El servidor usa las tablas user, db, y host en la base de datos MySQL en ambas etapas de control de acceso.

Usuarios

Creación de usuarios

Sintaxis:

CREATE USER USER@'host' [IDENTIFIED BY [PASSWORD] 'password']

Ejemplo:

CREATE USER user1@'localhost' IDENTIFIED BY 'mypassword';

Podemos especificar una contraseña encriptada, para ello tendremos que utilizar previamente la función PASSWORD().

SELECT PASSWORD('mypassword');

Salida:

Con este hash generado se lo pasamos como contraseña

CREATE USER user2@'localhost' IDENTIFIED BY PASSWORD '*FABE5482D5AADF36D028AC443D117BE1180B9725';

Eliminar usuarios

“DROP USER” seguido del usuario a eliminar.

DROP USER user1@'localhost';

Permisos

Para consultar los permisos de una cuenta dada, podemos usar el comando SHOW GRANTS.

SHOW GRANTS FOR root @'localhost'

Salida:

Asignar privilegios

Podemos crear directamente los usuarios con el comando GRANT y a la vez asignar los privilegios.

Sintaxis:

GRANT privilegios ON base_de_datos.tabla TO 'usuario'@'host_de_conexion' -> IDENTIFIED BY 'password' WITH GRANT OPTION;

Ejemplo asignando todos los privilegios. WITH GRANT OPTION permite que este usuario también pueda asignar privilegios a otros.

GRANT ALL PRIVILEGES ON *.* TO ‘user1'@'localhost' -> IDENTIFIED BY 'mipassword' WITH GRANT OPTION;

Estos son todos los privilegios disponibles:

Asignar privilegios al usuario con GRANT.

Ejemplo. Asigna todos los privilegios a user2 desde el host1 sobre todas las tablas de la base de datos ‘biblio’.

GRANT ALL ON biblio.* TO ‘user2'@'host1';

Quitar privilegios

Utilizaremos el comando REVOKE.

Sintaxis:

REVOKE privilegios, GRANT OPTION FROM 'usuario'@'host';

La opción “GRANT OPTION” sólo es necesaria si el usuario ha sido configurado con el privilegio “WITH GRANT OPTION”.

Es conveniente revisar antes los permisos que tiene el usuario.

Ejemplo:

REVOKE INSERT ON *.* FROM ‘user1'@'localhost';

FLUSH PRIVILEGES

Sirve para recargar la tabla de privilegios, pero sólo es necesario cuando se manipulan directamente las tablas de privilegios ejecutando INSERT, DELETE, etc en lugar de usar los comandos GRANT y REVOKE.

Deja un comentario