1. Método para resolverlo:
Para otorgar acceso a la base de datos de Moodle en modo solo consulta, sigue estos pasos:
- Obtener la IP de acceso:
- Solicita al usuario la IP pública desde la cual realizará las consultas.
- Asegúrate de que la IP esté autorizada en el firewall del servidor.
- Crear un usuario con permisos de solo lectura:
- Accede al servidor MySQL/MariaDB con privilegios de administrador.
- Ejecuta el siguiente comando para crear un usuario con acceso restringido:
CREATE USER 'usuario_consulta'@'IP_DEL_USUARIO' IDENTIFIED BY 'contraseña_segura'; GRANT SELECT ON moodle.* TO 'usuario_consulta'@'IP_DEL_USUARIO'; FLUSH PRIVILEGES; - Reemplaza
IP_DEL_USUARIOpor la IP del cliente ymoodlepor el nombre real de la base de datos.
- Configurar acceso remoto:
- En el archivo
my.cnfomysqld.cnf, busca la línea:bind-address = 127.0.0.1
- Cámbiala por:
bind-address = 0.0.0.0
- Reinicia MySQL/MariaDB con:
sudo systemctl restart mysql
- En el archivo
- Verificar el acceso:
- Desde el cliente, intenta conectarte con:
mysql -h servidor_mysql -u usuario_consulta -p
- Si la conexión falla, revisa reglas del firewall y permisos en MySQL.
- Desde el cliente, intenta conectarte con:
2. Causas del problema:
- La IP del usuario no está autorizada en el firewall o en MySQL.
- El usuario de consulta no tiene los permisos correctos asignados.
- El servidor MySQL solo permite conexiones locales (
bind-addressconfigurado en127.0.0.1). - Restricciones de seguridad en la infraestructura que bloquean conexiones externas.
3. Recomendaciones:
- Usar conexiones seguras con SSL para la base de datos si se permiten accesos remotos.
- Limitar los permisos del usuario solo a las tablas necesarias para las consultas.
- Monitorear el uso del usuario de consulta para detectar accesos no autorizados.
- Si se usa un túnel SSH, establecer la conexión con:
ssh -L 3306:servidor_mysql:3306 usuario@servidor
4. Ejemplos y Casos de Uso:
- Escenario 1: Un equipo de analítica necesita extraer datos sobre actividad de usuarios sin modificar registros.
- Escenario 2: Un desarrollador necesita consultar tablas específicas para crear informes personalizados.
- Escenario 3: Un auditor de seguridad requiere acceso temporal para verificar integridad de datos.
5. Referencias:
- Documentación oficial de MySQL sobre gestión de usuarios: https://dev.mysql.com/doc/refman/8.0/en/user-account-management.html
- Guía de Moodle sobre administración de la base de datos: https://docs.moodle.org/39/en/Database