Modo solo lectura
Abre una base para mirar sin riesgo de cambiar nada, en todas las conexiones o solo en una.
Cómo activarlo#
Hay tres formas, de la más amplia a la más concreta:
- Para todas las conexiones: define
GRESBASE_READ_ONLY=true. CubreDATABASE_URL, las conexiones guardadas y las sesiones del modo libre. - Desde la app: el administrador puede activar Solo lectura en Ajustes. Hace lo mismo que la variable y se aplica al reiniciar. Si la variable está definida, el ajuste queda bloqueado.
- Para una conexión guardada: marca Solo lectura en su formulario. Mira Conexiones guardadas.
services:
gresbase:
image: ghcr.io/amtzespinosa/gresbase:latest
environment:
DATABASE_URL: postgres://app:secreto@db:5432/app
GRESBASE_READ_ONLY: "true"docker run -d --name gresbase \
-e DATABASE_URL=postgres://app:secreto@db:5432/app \
-e GRESBASE_READ_ONLY=true \
ghcr.io/amtzespinosa/gresbase:latestDos capas#
El modo solo lectura actúa en dos sitios, así que si uno falla, el otro lo cubre:
- En PostgreSQL. Cada conexión se abre con
default_transaction_read_only=on. El propio PostgreSQL rechaza cualquier escritura. - En la API. Antes de tocar la base, Gresbase rechaza ediciones, importaciones, cambios de estructura y transacciones SQL con un
403y el códigoread_only.
El editor SQL ejecuta cada sentencia dentro de una transacción de solo lectura. Rechaza BEGIN, COMMIT, ROLLBACK y similares, así que una consulta no puede salirse de ella.
Qué ves#
La barra lateral muestra la etiqueta Solo lectura. Su descripción dice: «El modo solo lectura está activo: desde aquí nada puede cambiar tus datos. Las consultas guardadas siguen funcionando.»
Estos controles desaparecen:
- Editar celdas, insertar y borrar filas. La tabla muestra Solo lectura con el aviso «Gresbase está en modo solo lectura: no se pueden editar filas.»
- El botón Nueva tabla.
- El menú de acciones de la tabla: Renombrar…, Editar comentario…, Mover a otro esquema…, Vaciar tabla… y Eliminar tabla….
- Importar CSV y, en el menú contextual de la tabla, Importar CSV….
- La edición de la estructura.
- El interruptor Modo transacción del editor SQL.
Puedes seguir explorando, filtrando, exportando y lanzando consultas SELECT. También puedes guardar consultas: viven en el volumen de datos, no en la base.
Si aun así una escritura llega a la API, el mensaje es «Gresbase está en modo solo lectura: no se pueden hacer cambios.»
Un usuario de PostgreSQL de solo lectura#
Gresbase también detecta cuando el usuario de PostgreSQL (o la base de datos) tiene default_transaction_read_only a on. La interfaz se comporta entonces como arriba, y el editor SQL también: ejecuta cada sentencia en una transacción de solo lectura, rechaza BEGIN, COMMIT y similares, y no ofrece el modo transacción. Ni un SET default_transaction_read_only = off ni un BEGIN READ WRITE lo levantan. Mira Conectar con PostgreSQL.
El modo solo lectura y los avisos antes de un SQL destructivo te ayudan a no equivocarte. No son una barrera de seguridad. Lo que protege de verdad tus datos es el usuario de PostgreSQL con el que conecta Gresbase: si los datos no deben cambiar, dale solo SELECT.