Gestión Completa de Usuarios y Permisos en MySQL
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 4,95 KB
Gestión de Usuarios y Privilegios en MySQL
Comandos Fundamentales de Usuario
- Crear usuario:
CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'contraseña'; - Eliminar usuario:
DROP USER 'usuario'@'localhost'; - Renombrar usuario:
RENAME USER 'usuarioantiguo'@'localhost' TO 'usuarionuevo'@'localhost';
Administración de Contraseñas y Límites de Cuenta
- Añadir o cambiar contraseña (método SET):
SET PASSWORD FOR 'usuario'@'localhost' = PASSWORD('contraseña'); - Añadir contraseña (método GRANT):
GRANT USAGE ON *.* TO 'usuario'@'localhost' IDENTIFIED BY 'contraseña'; - Cambiar límites de una cuenta:
GRANT USAGE ON `nombre_bd`.* TO 'usuario'@'localhost' WITH MAX_QUERIES_PER_HOUR 100;
Gestión de Permisos
- Visualizar permisos de un usuario:
SHOW GRANTS FOR 'usuario'@'localhost'; - Refrescar privilegios:
FLUSH PRIVILEGES;(Necesario después de modificar las tablas de permisos manualmente).
Niveles de Almacenaje de Permisos
Los permisos en MySQL se estructuran jerárquicamente en los siguientes niveles:
- Nivel global: Se aplican a todas las bases de datos de un servidor. Se almacenan en la tabla
mysql.user. Ejemplos:GRANT ALL ON *.*yREVOKE ALL ON *.*. - Nivel de base de datos: Se aplican a todos los objetos dentro de una base de datos específica.
- Nivel de tabla: Se aplican a todas las columnas de una tabla específica.
- Nivel de columna: Se aplican a columnas (campos) individuales dentro de una tabla.
Mecanismo de Control de Acceso
Cuando un cliente intenta conectar a un servidor MySQL, este acepta o rechaza la conexión basándose en la identidad y la clave proporcionada. El proceso de autenticación se fundamenta en:
- El nombre de la máquina cliente (o su dirección IP) desde donde se origina la conexión.
- El nombre de usuario de MySQL.
- La contraseña proporcionada.
El servidor verifica esta información contra la tabla mysql.user. La conexión solo se establece si encuentra una fila donde las columnas Host y User coinciden con los datos del cliente y la contraseña es correcta.
El Servidor MySQL y Herramientas Relacionadas
mysqld: Es el programa principal, también conocido como el demonio de SQL (el servidor MySQL). Debe estar en ejecución para que los clientes puedan acceder a las bases de datos.mysqld-max: Una versión extendida del servidor MySQL que incluye características adicionales.mysql_install_db: Script utilizado para inicializar el directorio de datos de MySQL y crear las tablas de permisos con los privilegios por defecto.mysql_fix_privilege_tables: Script que se ejecuta después de una actualización de MySQL para asegurar que las tablas de permisos tengan la estructura más reciente.
Opciones de Conexión y Ejemplos
Ejecución de Consultas desde la Terminal
Es posible ejecutar una consulta directamente sin entrar a la consola interactiva de MySQL usando la opción -e. Al ejecutar el comando, el sistema solicitará la contraseña.
mysql -u root -p -e "SELECT User, Host FROM mysql.user;"
mysql -u usuario_app -p -e "SELECT idmascota, nombre FROM zoologico.mascota;"
Nota: Las opciones como -hlocalhost y -h localhost son equivalentes.
Archivos de Registro (Logs) de MySQL
MySQL utiliza varios archivos de registro para monitorizar su actividad:
- Registro de errores (Error Log): Registra problemas encontrados al iniciar, ejecutar o detener
mysqld. Es fundamental para la depuración de problemas del servidor. - Registro general de consultas (General Query Log): Registra cada conexión de cliente establecida y todas las sentencias SQL que ejecutan.
- Registro binario (Binary Log): Registra todas las sentencias que modifican datos (
INSERT,UPDATE,DELETE). Es esencial para operaciones de replicación y recuperación de datos a un punto en el tiempo. - Registro de consultas lentas (Slow Query Log): Registra todas las consultas SQL que tardan más tiempo en ejecutarse que el valor definido en la variable del sistema
long_query_time.