Introducción a la Lista de usuarios de PostgreSQL
En cualquier base de datos, necesitamos crear y tener varios usuarios que puedan acceder a la base de datos. Cada usuario debe tener ciertos privilegios de acceso y debe estar autorizado, el usuario. De forma predeterminada, el servidor de base de datos PostgreSQL tiene un usuario predeterminado llamado Postgres. Este es el superusuario que tiene todos los derechos y privilegios concedidos para todas las bases de datos y tablas. Él mismo puede crear nuevos usuarios y asignarles roles, otorgar y revocar permisos a otros usuarios, etc. A menudo, el superusuario o el administrador de la base de datos necesita saber acerca de todos los usuarios presentes en el servidor de base de datos actual. En este artículo, aprenderemos cómo podemos enumerar todos los usuarios que están presentes en nuestro servidor de base de datos actual. Comencemos por estudiar dónde se almacenan y manipulan los datos relacionados con el usuario en la base de datos.
Usuarios de la Lista de PostgreSQL
A continuación se muestran los tres Usuarios de la Lista diferentes:
Comience Su Curso Gratuito de Ciencia de Datos
Hadoop, Ciencia de Datos, Estadísticas & otros
1. Datos de usuario en PostgreSQL
Todos los datos relacionados con el usuario se almacenan en la tabla denominada pg_user, que pertenece al esquema denominado pg_catalog. Esta tabla contiene toda la información, como username, usesysid, usecreatedb, usesuper, userepl, usebypassrls, passwd, valuntil y useconfig. Username, usesysid y passwd son el nombre, id y contraseña almacenados en el sistema de cifrado hash md5 del usuario. Simultáneamente, todos los demás parámetros son los parámetros booleanos que especifican si el usuario tiene ese privilegio, como usesuper, que especifica si ese usuario es un superusuario o no. Si es así, entonces contiene el valor como t que significa verdadero else f que significa falso. Veamos qué significan en la práctica todos los demás campos recuperados.
- Usecreatedb: Este campo nos indica si ese usuario en particular puede crear una nueva base de datos y tiene el privilegio de hacerlo.
- Userepl: Podemos crear replicaciones de una sola tabla en muchas otras bases de datos. Solo un usuario específico que tenga ese privilegio puede hacerlo. Por lo tanto, si el usuario tiene el privilegio de crear nuevas réplicas, este campo se establece en true.
- Usebypassrls: Este campo se establece en true solo si al usuario se le permite omitir el RLS
Primero veremos cómo podemos recuperar la información relacionada con el usuario de la tabla pg_user. Tendremos que construir nuestra consulta de la siguiente manera –
Código:
SELECT * FROM pg_catalog.pg_user;
Salida:
Si solo desea obtener la lista de usuarios que contiene sus nombres, puede iniciar la siguiente consulta.
Código:
SELECT usename FROM pg_catalog.pg_user;
Salida:
2. Usando MetaCommands
PostgreSQL nos proporciona una maravillosa utilidad llamada psql, donde podemos usar metaCommands. Los MetaComandos son las utilidades cortas listas para usar que están disponibles para usar, lo que hace que el trabajo del administrador de bases de datos sea muy fácil. Para recuperar los datos relacionados con el usuario \, du es el meta-comando que se puede usar. Para esto, necesitará usar el símbolo del sistema psql en PostgreSQL. Permítanos fuego este comando y ver que es el resultado que estamos obteniendo:
Código:
\du
Salida:
- Aquí, Papel Nombre es el nombre del usuario. Lista de roles, es decir, atributos que son los roles que un usuario en particular tiene para sí mismo. Superusuario, Crear rol, Crear BD, Replicación, Omitir RLS son reglas asignadas al superusuario que significa que el superusuario puede crear los nuevos roles y usuarios, crear nuevas bases de datos, realizar replicaciones de los objetos existentes y omitir el RLS.El campo»Miembro de»
- especifica si el usuario es miembro de cualquier grupo. En PostgreSQL, el administrador de la base de datos puede crear varios grupos y agregar diferentes usuarios a diferentes grupos, lo que le ayuda a administrar los usuarios correctamente mientras retiene y revoca los permisos. Si hay alguno de estos grupos y ese usuario en particular pertenece a un grupo en particular, el nombre de ese grupo se muestra frente a ese usuario en el campo Miembro De columna.
- Este Metacomando activa internamente una consulta en la tabla pg_catalog.pg_user para recuperar la información del usuario. Aquí, obtenemos el nombre del rol como el nombre del usuario, y una lista de atributos de roles nos ayuda a saber qué privilegios se otorgan a ese usuario en particular, mientras que un miembro del campo nos dice si el usuario es miembro de cualquier grupo en particular si está presente. La consulta que recibe fuego internamente después de usar \du metacommand es algo similar a la siguiente instrucción de consulta:
Código:
SELECT u.usename AS "Role name",
CASE WHEN u.usesuper AND u.usecreatedb THEN CAST('Create DB, Superuser' AS pg_catalog.text)
WHEN u.usesuper THEN CAST('Superuser' AS pg_catalog.text) WHEN u.usecreatedb THEN CAST('Create DB' AS pg_catalog.text)
ELSE CAST('' AS pg_catalog.text) END AS "Attributes"
FROM pg_catalog.pg_user u ORDER BY 1;
3. Usando pg_shadow
Una forma más de obtener la lista de usuarios es usando la tabla pg_shadow que también contiene información sobre los usuarios en el servidor PostgreSQL. Esta tabla se mantiene para compatibilidad con versiones anteriores de PostgreSQL anteriores a la 8.1. Esta tabla almacena los roles que pueden iniciar sesión y marcar rolcanlogin como 1 en la tabla pg_authid. Pg_user es la vista creada en la tabla base pg_shadow, que está disponible públicamente. pg_shadow solo es accesible por el superusuario. la vista pg_user contiene el campo de contraseña en blanco para mantener la seguridad. La tabla pg_ shadow contiene los campos username, usesysid, usecreatedb, usesuper, userepl, usebypassrls, passwd, valuntil y useconfig para todos los usuarios del servidor de base de datos.
Código:
SELECT * FROM pg_shadow;
Salida:
select usesysid as "Id of User", usename as "User Name",
usesuper as "Whether User Is SuperUser", passwd as "Md5 Encrypted Password", valuntil as "Expiry of Password"
from pg_shadow order by usename;
Salida:
Conclusión
En el servidor de base de datos PostgreSQL, podemos recuperar la información del usuario ya sea por la recuperación de los registros de la tabla pg_user que pertenece a pg_catalog esquema. Una forma más es usar la meta-orden \ du, que dispara internamente la consulta en la propia tabla pg_user. Aparte de esto, hay una tabla más llamada pg_shadow, que almacena información sobre los usuarios y se puede usar para listar a todos los usuarios en el servidor de base de datos PostgreSQL. Tenga en cuenta que el alcance de todos estos métodos es todo el servidor de base de datos.
Artículos recomendados
Esta es una guía para los Usuarios de la Lista de PostgreSQL. Aquí discutimos los datos de usuario, el metaComando de usuario y el usuario pg_shadow con ejemplos para implementar. También puede ir a través de nuestros otros artículos para aprender más–
- PostgreSQL FETCH
- Foreign Key en PostgreSQL
- PostgreSQL Tabla
- PostgreSQL Consultas | Introducción | Ejemplos
- PostgreSQL REGEXP_MATCHES()
- Guía de SQL REGEXP