Saltar al contenido
DBAExperts
PostgreSQL Usuarios y permisos

Cómo crear un usuario y otorgar permisos en PostgreSQL con GRANT

En PostgreSQL los usuarios son roles con login. Otorgar acceso a una tabla no basta: hay que dar permiso sobre el esquema y considerar los objetos que se crearán a futuro.

  1. 1

    Crea el rol con contraseña

    Un rol con LOGIN es lo que llamamos usuario. Define una contraseña fuerte y, si aplica, un límite de conexiones.

    CREATE ROLE app_lectura WITH LOGIN PASSWORD 'cambia_esto' CONNECTION LIMIT 20;
  2. 2

    Da acceso a la base y al esquema

    Sin USAGE sobre el esquema, el rol no ve las tablas aunque tenga permisos sobre ellas. Este es el paso que más se olvida.

    GRANT CONNECT ON DATABASE ventas TO app_lectura;
    GRANT USAGE ON SCHEMA public TO app_lectura;
  3. 3

    Otorga permisos sobre las tablas actuales

    GRANT sobre ALL TABLES aplica solo a las tablas que ya existen en el esquema en ese momento.

    GRANT SELECT ON ALL TABLES IN SCHEMA public TO app_lectura;
  4. 4

    Cubre las tablas futuras con privilegios por defecto

    ALTER DEFAULT PRIVILEGES asegura que las tablas creadas después también hereden el permiso, sin tener que repetir el GRANT.

    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO app_lectura;

// el error común

Dar GRANT sobre las tablas existentes y olvidar ALTER DEFAULT PRIVILEGES: en cuanto alguien crea una tabla nueva, el usuario deja de poder leerla y aparece un error intermitente difícil de rastrear.

// cuándo conviene un experto

Si manejas varios equipos, esquemas y roles anidados, el modelo de permisos se vuelve fácil de romper y difícil de auditar. En dba.mx diseñamos esquemas de roles con mínimo privilegio y los dejamos documentados para que el acceso sea claro y seguro.

Agenda un Escaneo — desde USD $550

Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.