Skip to content

Usuarios y permisos

En SGBDs de tipo servidor podrás crear usuarios y asignarles permisos específicos para acceder a bases de datos, tablas y realizar operaciones. Esto es esencial para la seguridad y el control de acceso en entornos multiusuario.

Creación de usuarios

Para crear un usuario en un SGBD como MySQL, puedes utilizar el siguiente comando:

CREATE USER 'nombre'@'host' IDENTIFIED BY 'password';
Valor en 'host' Cuándo usarlo Ejemplo
localhost El usuario solo puede conectarse desde el mismo servidor donde corre MySQL. 'usuario'@'localhost'
127.0.0.1 Similar a localhost, pero fuerza la conexión vía TCP/IP en lugar de socket Unix. 'usuario'@'127.0.0.1'
% Permite la conexión desde cualquier host (menos seguro si no se restringe con firewall). 'usuario'@'%'
192.168.1.% Permite conexiones desde toda una subred. 'usuario'@'192.168.1.%'
192.168.1.50 Solo permite conexión desde una IP específica. 'usuario'@'192.168.1.50'
mi.servidor.com Solo permite conexión desde un host con ese nombre DNS. 'usuario'@'mi.servidor.com'
::1 Permite conexión solo desde localhost usando IPv6. 'usuario'@'::1'

Luego podrás acceder con el comando:

mysql -u nombre -p

Asignación de permisos

Para asignar permisos a un usuario usamos el comando GRANT.

GRANT tipo_permiso ON objeto TO 'nombre'@'host';
GRANT SELECT, INSERT ON base_datos.* TO 'usuario'@'localhost';
GRANT ALL PRIVILEGES ON base_datos.* TO 'usuario'@'localhost';
Tipo de permiso Descripción
SELECT Permite leer datos de tablas.
INSERT Permite insertar nuevos registros en tablas.
UPDATE Permite modificar registros existentes en tablas.
DELETE Permite eliminar registros de tablas.
CREATE Permite crear nuevas tablas o bases de datos.
DROP Permite eliminar tablas o bases de datos.
INDEX Permite crear o eliminar índices en tablas.
ALTER Permite modificar la estructura de tablas existentes.
GRANT OPTION Permite al usuario otorgar sus propios permisos a otros usuarios.
ALL PRIVILEGES Otorga todos los permisos disponibles en el SGBD.
USAGE No otorga permisos, pero permite crear el usuario sin asignar privilegios específicos.
EXECUTE Permite ejecutar procedimientos almacenados.
FILE Permite leer y escribir archivos en el sistema de archivos del servidor.
RELOAD Permite recargar las tablas de privilegios y otras configuraciones del servidor.
SHUTDOWN Permite apagar el servidor MySQL (requiere privilegios de administrador).
PROCESS Permite ver los procesos en ejecución del servidor.
SUPER Permite realizar operaciones administrativas avanzadas, como matar conexiones o cambiar variables globales.
REPLICATION SLAVE Permite al usuario actuar como esclavo en una configuración de replicación.
REPLICATION CLIENT Permite al usuario consultar el estado de la replicación.
BACKUP Permite realizar copias de seguridad de bases de datos.
BINLOG Permite al usuario escribir en los registros binarios del servidor.
AUDIT Permite registrar eventos de auditoría en el servidor.
CLONE Permite clonar bases de datos o tablas.
PERSIST_RO_VARIABLES_ADMIN Permite modificar variables de configuración persistentes.

Revocación de permisos

Para revocar permisos a un usuario, usamos el comando REVOKE.

REVOKE tipo_permiso ON objeto FROM 'nombre'@'host';
REVOKE SELECT, INSERT ON base_datos.* FROM 'usuario'@'localhost';
REVOKE ALL PRIVILEGES ON base_datos.* FROM 'usuario'@'localhost';

Eliminación de usuarios

Para eliminar un usuario, usamos el comando DROP USER.

DROP USER 'nombre'@'host';