Volver a la página principal
miércoles 17 julio 2024
1,868

Cómo Ver los Usuarios en PostgreSQL

Listar Usuarios en PostgreSQL

Método 1: Utilizar la Vista del Sistema pg_roles

La vista del sistema pg_roles en PostgreSQL contiene información sobre todos los roles (usuarios y grupos de usuarios) definidos en la base de datos. Puedes consultar esta vista para obtener una lista de todos los usuarios.

SELECT rolname, rolsuper, rolcreaterole, rolcreatedb, rolcanlogin
FROM pg_roles;
  • rolname: Nombre del rol (usuario).
  • rolsuper: Indica si el rol tiene privilegios de superusuario.
  • rolcreaterole: Indica si el rol puede crear otros roles.
  • rolcreatedb: Indica si el rol puede crear bases de datos.
  • rolcanlogin: Indica si el rol puede iniciar sesión (es un usuario).

Método 2: Utilizar la Vista del Sistema pg_user

La vista del sistema pg_user es una vista heredada que muestra información sobre los usuarios que pueden iniciar sesión en PostgreSQL. Es un subconjunto de pg_roles enfocado en los usuarios.

SELECT usename, usesysid, usecreatedb, usesuper, userepl
FROM pg_user;
  • usename: Nombre del usuario.
  • usesysid: ID del sistema del usuario.
  • usecreatedb: Indica si el usuario puede crear bases de datos.
  • usesuper: Indica si el usuario tiene privilegios de superusuario.
  • userepl: Indica si el usuario tiene permisos de replicación.

Método 3: Utilizar el Comando \du en psql

Si estás utilizando la línea de comandos de psql, puedes utilizar el comando \du para listar todos los usuarios y sus roles de una manera más amigable.

\du

Este comando muestra una lista de todos los usuarios y sus atributos de rol.

Ejemplo Práctico

Supongamos que queremos ver una lista de todos los usuarios en PostgreSQL, junto con sus privilegios y roles. Utilizaremos la vista pg_roles para este propósito.

SELECT rolname AS "Usuario",
       rolsuper AS "Superusuario",
       rolcreaterole AS "Puede crear roles",
       rolcreatedb AS "Puede crear bases de datos",
       rolcanlogin AS "Puede iniciar sesión"
FROM pg_roles;

Salida Esperada

La salida de la consulta debería ser algo similar a esto:

Usuario  | Superusuario | Puede crear roles | Puede crear bases de datos | Puede iniciar sesión
----------+--------------+-------------------+----------------------------+----------------------
 postgres | t            | t                 | t                          | t
 user1    | f            | f                 | f                          | t
 user2    | f            | t                 | f                          | t

Esta tabla muestra todos los usuarios en el sistema, junto con sus privilegios y roles.

Ver Detalles de un Usuario Específico

Para ver los detalles de un usuario específico, puedes filtrar la consulta utilizando el nombre del usuario. Por ejemplo, para ver los detalles del usuario user1:

SELECT rolname AS "Usuario",
       rolsuper AS "Superusuario",
       rolcreaterole AS "Puede crear roles",
       rolcreatedb AS "Puede crear bases de datos",
       rolcanlogin AS "Puede iniciar sesión"
FROM pg_roles
WHERE rolname = 'user1';

Salida Esperada

Usuario | Superusuario | Puede crear roles | Puede crear bases de datos | Puede iniciar sesión
---------+--------------+-------------------+----------------------------+----------------------
 user1   | f            | f                 | f                          | t

Conclusión

Conocer cómo ver los usuarios en PostgreSQL es esencial para la administración y seguridad de la base de datos. En este artículo, hemos cubierto varios métodos para listar usuarios y obtener información relevante sobre sus roles y permisos. Estos métodos incluyen el uso de vistas del sistema como pg_roles y pg_user, así como el comando \du en la línea de comandos de psql.

Practicar estos comandos y consultas te permitirá gestionar mejor los usuarios y roles en PostgreSQL, asegurando que solo los usuarios autorizados tengan acceso y los privilegios adecuados.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer