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:
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:
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
.