¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Administración de Sistemas Gestores de BBDD
Administración de Usuarios
Una de las funciones del SGBD es la de proporcionar seguridad en el acceso a los datos a través de mecanismos de control de acceso.
En SQL, y así lo hacen todos los SGBD relacionales, se sigue un modelo Usuario-Privilegio para otorgar acceso a los objetos de la Base de Datos. Existen una serie de privilegios predefinidos y es el administrador del SGBD el encargado de asignar o no los privilegios 1) a los usuarios sobre determinados objetos (tablas, procedimientos, . . .).
Supongamos que somos los administradores de un SGBD MySQL y tenemos que proporcionar acceso a una Base de Datos para una aplicación biblioteca a un desarrollador de mi compañía:
-- Si no hemos creado la base de datos, podemos hacerlo ahora CREATE DATABASE biblioteca; -- Crea el usuario asignándole contraseña CREATE USER 'desarrollador' IDENTIFIED BY 'mipassword'; -- Indicando el host de conexion del usuario -- Desde cualquier host (igual que si se omite) CREATE USER 'desarrollador'@'%' IDENTIFIED BY 'mipassword'; -- Usuario para conectarse localmente CREATE USER 'desarrollador'@'localhost' IDENTIFIED BY 'mipassword'; -- Usuario para conectarse remotamente CREATE USER 'desarrollador'@'146.167.34.15' IDENTIFIED BY 'mipassword'; -- Ver los usuarios SELECT 'desarrollador' FROM mysql.user; SELECT * FROM mysql.user;
Permisos y privilegios
Conceder privilegios sobre un objeto: GRANT
Permite conceder privilegios sobre un objeto a un usuario de la Base de Datos.
GRANT <privilegio> ON <objeto> TO <usuario> [WITH GRANT OPTIONS]
Revocar privilegios sobre un objeto: REVOKE
Permite eliminar el privilegio sobre un objeto a un usuario.
REVOKE <privilegio> ON <objeto> FROM <usuario>
Ejemplos:
-- Uso sin permisos para acceder desde local mysql> GRANT USAGE ON *.* TO 'user'@localhost IDENTIFIED BY 'pass'; -- Uso sin permisos para acceder desde remoto mysql> GRANT USAGE ON *.* TO 'user'@'%' IDENTIFIED BY 'pass'; -- Conceder todos los privilegios sobre una base de datos en local GRANT ALL privileges ON `mibd`.* TO 'user'@localhost; -- Privilegios desde remoto GRANT ALL privileges ON `mibd`.* TO 'user'@'%'; -- Mostrar privilegios mysql> SHOW GRANTS FOR 'user'@localhost; -- Eliminar privilegios REVOKE ALL PRIVILEGES ON *.* FROM 'user'@localhost; REVOKE USAGE ON *.* FROM 'user'@localhost; -- Aplicar los cambios realizados FLUSH PRIVILEGES; -- Verificar permisos mysql> SHOW GRANTS FOR 'user'@localhost;
Arquitectura Cliente-Servidor
MySQL funciona únicamente bajo la arquitectura cliente-servidor. Esto quiero decir que una vez iniciado MySQL la única forma de gestionarlo es realizando una conexión desde un cliente. Para ello necesitamos unos datos de conexion, principalmente 4:
- Dirección IP del servidor
- Puerto de conexión: el puerto habitual de funcionamiento de MySQL es
3306
. - Usuario: siempre necesitamos un usuario para conectarnos.
- Contraseña: necesitamos la contraseña de ese usuario.
Rendimiento de acceso a datos
Podemos comprobar el rendimiento de las consultas ejecutadas mediante la herramienta profiler: MySQL Profiler
Bases de Datos Distribuidas
MySQL Cluster
© 2025 Fernando Valdeón