Tema 15 · Usuarios & Permisos

Gestión de Usuarios, Hosts (% vs localhost) y Privilegios Granulares

Aprende a crear usuarios seguros en phpMyAdmin, entender la diferencia entre localhost y comodín (%) y aplicar el Principio de Menor Privilegio para blindar tus aplicaciones web.

El Error Mortal del Principiante: Usar `root` en la Aplicación Web

Muchos programadores cometen la imprudencia de conectar sus proyectos PHP, Laravel o Node.js utilizando el superusuario root sin contraseña o con contraseña global.

⚠️ Riesgo Crítico de Inyección SQL (SQLi): Si un atacante encuentra una vulnerabilidad en tu código y tu web se conecta como root, el intruso podrá leer archivos del sistema operativo (LOAD_FILE), escribir troyanos en el disco (INTO OUTFILE) y eliminar todas las bases de datos del servidor con DROP DATABASE.

La solución profesional es aplicar el Principio de Menor Privilegio: crear un usuario exclusivo por cada proyecto con acceso restringido únicamente a su base de datos.

Creación de Usuarios en la Pestaña "Cuentas de Usuarios"

  1. Haz clic en el icono de Inicio (Casita) para situarte a nivel de Servidor.
  2. En la barra superior, ve a la pestaña Cuentas de usuarios y pulsa en Agregar cuenta de usuario.
  3. Nombre de usuario: Escribe un identificador descriptivo (ejemplo: kilo_app_user).
  4. Nombre de host:
    • localhost: El usuario solo puede conectarse si la petición proviene del mismo servidor físico (el estándar para el 99% de aplicaciones web con PHP).
    • Cualquier host (%): Permite conexiones remotas desde cualquier dirección IP de internet (solo usar si tu backend corre en un servidor distinto al de la base de datos).
  5. Contraseña: Escribe una clave robusta o pulsa el botón Generar de phpMyAdmin.

Asignación Granular de Privilegios

Categoría Privilegios Recomendados para la Web Privilegios Prohibidos para la Web
Datos (Data) SELECT, INSERT, UPDATE, DELETE FILE (Impide leer/escribir archivos en el disco duro del servidor).
Estructura (Structure) CREATE, ALTER, INDEX (Solo para ejecutar migraciones) DROP DATABASE (Evita que un fallo borre el esquema completo).
Administración (Administration) Ninguno SUPER, GRANT, PROCESS, SHUTDOWN (Reservados exclusivamente para el DBA).

⚡ Sentencias SQL para Crear Usuario y Asignar Privilegios Mínimos

Código SQL equivalente que phpMyAdmin ejecuta al crear el usuario restringido:

crear-usuario-restringido.sql
Solo lectura
-- 1. Crear usuario restringido a localhost con autenticación nativa
CREATE USER 'kilo_tienda'@'localhost' IDENTIFIED BY 'ClaveSegura_2026!$#';

-- 2. Otorgar permisos únicamente sobre la base de datos de la tienda
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX 
ON `tienda_online`.* 
TO 'kilo_tienda'@'localhost';

-- 3. Recargar la tabla de privilegios en memoria de MariaDB
FLUSH PRIVILEGES;

-- 4. Verificar privilegios otorgados al usuario
SHOW GRANTS FOR 'kilo_tienda'@'localhost';
🧠
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección
1 Pregunta
Pregunta 1
¿Por qué la directiva de seguridad del Principio de Menor Privilegio exige crear un usuario específico con permisos limitados para cada aplicación web en lugar de usar "root"?
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual de phpMyAdmin: Gestión de Bases de Datos y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.