Introducción
La administración de una base de datos requiere la eliminación de cuentas de usuario, especialmente si ya no se necesita una cuenta de usuario. La eliminación de usuarios de Postgres innecesarios es una práctica esencial de seguridad de la base de datos. Esta acción también elimina un punto de acceso potencialmente imperceptible para los piratas informáticos.
Este tutorial explica cómo descartar un usuario de Postgres de varias maneras.
Requisitos previos
- Acceso a la línea de comandos o terminal con privilegios sudo.
- Postgres instalado, preferiblemente la última versión.
- Usuarios de Postgres para descartar. Siga nuestro tutorial para crear usuarios de Postgres con fines de prueba.
Eliminar un usuario de Postgres
Un usuario en PostgreSQL tiene privilegios de inicio de sesión de forma predeterminada. Hay dos métodos para eliminar un usuario, y ambos requieren acceso a CREATEROLE
derechos. Para eliminar un superusuario, el SUPERUSER
el privilegio es obligatorio.
Los postgres El usuario creado durante la instalación tiene todos los privilegios necesarios de forma predeterminada. Los ejemplos a continuación usan postgres usuario para conectarse a PostgreSQL.
Método 1:eliminar un usuario de Postgres con la utilidad dropuser
Postgres ofrece una utilidad de cliente para eliminar un usuario sin conectarse a la interfaz de línea de comandos de PSQL.
Para eliminar un usuario en Postgres con dropuser
, ejecute el siguiente comando en la terminal:
sudo -u postgres dropuser <user> -e
Alternativamente, divida el comando en dos pasos:
1. Cambie a postgres usuario (u otro usuario con los privilegios correctos):
sudo su - postgres
2. Ejecute el comando dropuser:
dropuser <name> -e
En ambos casos, Postgres elimina al usuario.
Método 2:eliminar un usuario de Postgres con declaración DROP USER
Otra forma de eliminar un usuario de una base de datos de Postgres es mediante una instrucción PSQL.
Para eliminar un usuario, siga los pasos a continuación:
1. Conéctese al cliente PSQL a través de la terminal con el siguiente comando:
sudo -u postgres psql
El terminal cambia a la consola PSQL (postgres=#
).
2. Enumere todos los usuarios y roles con:
\du
Localice al usuario para eliminarlo y use el nombre en el siguiente paso.
3. Ejecute la siguiente consulta para eliminar un usuario:
DROP USER <name>;
Alternativamente, para verificar si un usuario existe antes de eliminarlo, ingrese:
DROP USER IF EXISTS <name>;
El cliente notifica si el rol no existe.
4. Vuelva a mostrar la lista de usuarios para confirmar que el usuario se ha ido:
\du
El usuario ya no está en la lista de roles. Esta salida indica una eliminación exitosa.
Eliminar varios usuarios de Postgres
El cliente PSQL permite eliminar más de un usuario de Postgres a la vez. Las instrucciones a continuación explican cómo conectarse al cliente de PostgreSQL y eliminar varios usuarios.
1. Conéctese al cliente PSQL con:
sudo -u postgres psql
2. Enumere todos los usuarios con:
\du
Localice los usuarios para su eliminación y use los nombres en el siguiente paso.
3. Elimine varios usuarios de Postgres separando a los usuarios individuales con una coma:
DROP USER [IF EXISTS] <name>, <name>, ... <name>;
El comando elimina varios roles a la vez. Agregar IF EXISTS
para omitir usuarios que no están disponibles.
4. Vuelva a comprobar la lista de usuarios para confirmar que se han eliminado todos los roles:
\du
Los usuarios eliminados ya no están en la lista.
Eliminar un usuario de Postgres con dependencias
Intentar eliminar un usuario de Postgres con dependencias falla y muestra un error.
Para eliminar al usuario de forma segura, haga lo siguiente:
1. Asigne la propiedad del objeto del detalle del error a otro usuario. Por ejemplo, para transferir los objetos propiedad de myuser a postgres , ejecuta:
REASSIGN OWNED BY myuser TO postgres;
La consulta cambia la propiedad del objeto a postgres usuario.
2. Elimine las conexiones del objeto de la base de datos al usuario con:
DROP OWNED BY myuser;
Este paso también elimina cualquier privilegio que el usuario tenga sobre el objeto.
3. Por el momento, el usuario ya no tiene dependencias. Para eliminar al usuario, ejecute:
DROP USER myuser;
Dado que no existen dependencias, la eliminación es exitosa.
Eliminar una función de Postgres
Para eliminar un rol de Postgres, ejecute el siguiente comando en el cliente PSQL:
DROP ROLE [IF EXISTS] <name>;
El DROP USER
declaración es un alias para DROP ROLE
. Los usuarios de Postgres son roles con LOGIN
permisos Por lo tanto, tanto DROP USER
y DROP ROLE
son intercambiables y funcionan tanto para usuarios como para roles.