HOWTO · PostgreSQL

Cambiar el propietario de la base de datos PostgreSQL

Con la consulta REASIGNAR, podemos cambiar la propiedad de la tabla a otros usuarios. El otro usuario debe existir en la base de datos; de lo contrario, mostrará un error.

Podemos usar la consulta REASIGNAR PROPIEDAD para cambiar la propiedad de la base de datos existente. El nuevo usuario podrá realizar todas las consultas que podía realizar el anterior propietario.

Cambiar la propiedad de una base de datos en Psql

Para fines de demostración, vamos a crear una nueva base de datos con un antiguo propietario y un nuevo usuario. Luego, asigne al nuevo usuario como propietario de la nueva base de datos.

Crear una base de datos:

postgres=# create DATABASE SELL;
CREATE DATABASE
postgres=#

Creando un nuevo usuario:

postgres=# CREATE USER TEST_USER WITH PASSWORD '~test~';
CREATE ROLE
postgres=#

El propietario actual de la tabla Vender:

SELECT dbs.datname, roles.rolname
FROM pg_catalog.pg_database dbs, pg_catalog.pg_roles roles
WHERE dbs.datdba = roles.oid;

Inicialmente, iniciamos sesión como postgres; este era nuestro nombre de usuario. Ahora, si ejecutamos la consulta anterior, me mostrará el propietario de la base de datos existente dentro de Postgres:

  datname  | rolname
-----------+----------
 template0 | postgres
 template1 | postgres
 sell      | postgres
 postgres  | postgres
(4 rows)

Podemos ver que la tabla Vender tiene el propietario postgres. Cambiemos el propietario con el ’test_user'.

Así es como lo haremos:

ALTER DATABASE SELL OWNER TO TEST_USER;

Y aquí está la salida:

postgres=# ALTER DATABASE SELL OWNER TO TEST_USER;
ALTER DATABASE
postgres=# SELECT dbs.datname, roles.rolname
postgres-# FROM pg_catalog.pg_database dbs, pg_catalog.pg_roles roles
postgres-# WHERE dbs.datdba = roles.oid;
  datname  |  rolname
-----------+-----------
 template0 | postgres
 template1 | postgres
 postgres  | postgres
 sell      | test_user
(4 rows)


postgres=#

Puede ver que el propietario de la base de datos llamado vender se ha cambiado a test_user.

Para saber más sobre el comando de modificación de la base de datos, siga la documentación oficial.