La mayoría de las aplicaciones web solo necesitan leer y escribir datos — nunca crean tablas, eliminan índices ni gestionan procedimientos almacenados. Al otorgar solo SELECT, INSERT, UPDATE y DELETE, le das a tu aplicación exactamente los permisos que necesita y nada más.
Por Qué los Privilegios Solo de Datos Son Ideales para Aplicaciones
Una aplicación web estándar realiza cuatro operaciones de datos:
- SELECT — Leer filas de tablas (cargar páginas, obtener registros).
- INSERT — Añadir nuevas filas (registros de usuarios, envíos de formularios).
- UPDATE — Modificar filas existentes (editar perfiles, actualizar configuraciones).
- DELETE — Eliminar filas (borrar publicaciones, limpiar sesiones).
Estos cuatro privilegios cubren prácticamente cada consulta que un CMS, plataforma de comercio electrónico o aplicación web personalizada ejecutará. Otorgar privilegios adicionales de estructura o administración crea un riesgo innecesario.
Método 1: Durante la Creación del Usuario
- Inicia sesión en mysql.nobregas.org.
- Ve a Database Users > haz clic en Create User.
- Introduce el nombre de usuario, contraseña y host.
- Selecciona la base de datos destino del desplegable Grant to Database.
- La sección de Privilegios aparece con ALL PRIVILEGES marcado.
- Desmarca ALL PRIVILEGES para revelar checkboxes individuales.
- Bajo Data, marca: SELECT, INSERT, UPDATE, DELETE.
- Deja todos los checkboxes de Structure y Administration sin marcar.
- Haz clic en Create User.
Método 2: Vía Manage (Usuario Existente)
- Ve a Database Users y haz clic en Manage en el usuario.
- En la sección Add Database Access, selecciona la base de datos.
- Desmarca ALL PRIVILEGES.
- Marca solo SELECT, INSERT, UPDATE, DELETE.
- Haz clic en Add Grant.
Método 3: Reducir un Grant Existente
Si un usuario actualmente tiene ALL PRIVILEGES y quieres restringir a solo datos:
- Haz clic en Manage en el usuario.
- Encuentra la base de datos en Current Grants y haz clic en Edit.
- Desmarca ALL PRIVILEGES.
- Marca solo SELECT, INSERT, UPDATE, DELETE.
- Haz clic en Save Changes.
Qué Puede Hacer Este Usuario
| Operación | Consulta de Ejemplo | ¿Permitido? |
|---|---|---|
| Leer datos | SELECT * FROM users |
Sí |
| Añadir filas | INSERT INTO orders (...) |
Sí |
| Editar filas | UPDATE products SET price = 9.99 |
Sí |
| Eliminar filas | DELETE FROM sessions WHERE expired = 1 |
Sí |
| Crear tabla | CREATE TABLE logs (...) |
No |
| Eliminar tabla | DROP TABLE users |
No |
| Alterar estructura | ALTER TABLE users ADD COLUMN age INT |
No |
Cuándo Usar Esta Configuración
- WordPress, Joomla, Laravel, Django — Estos frameworks solo necesitan operaciones CRUD después de la configuración inicial.
- Tiendas de comercio electrónico — WooCommerce, PrestaShop y plataformas similares.
- APIs personalizadas — Backends REST o GraphQL que leen y escriben datos.
- Entornos de hosting compartido — Limita el radio de impacto si las credenciales se filtran.
Beneficio de Seguridad
Si un atacante obtiene acceso a un usuario solo de datos, no puede:
- Eliminar o truncar tus tablas.
- Alterar la estructura de tus tablas.
- Crear triggers o procedimientos almacenados.
- Causar daño estructural irreversible.
Tus datos pueden seguir en riesgo, pero el esquema de tu base de datos permanece intacto — haciendo la recuperación significativamente más fácil.