En Postgresql, después de pg_dump, los privilegios de acceso a la base de datos no se restauran
-
11-12-2019 - |
Pregunta
Supongamos que el usuario foo posee una base de datos gee y el usuario foo le ha otorgado a la barra de usuario todos los privilegios de acceso a la base de datos gee.
gee=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
gee | foo | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/foo +
| | | | | foo=CTc/foo +
| | | | | bar=CTc/foo
Volcamos esta base de datos,
$ pg_dump -U foo -v -f gee.dump gee
En la base de datos, la barra de usuario ha creado un esquema.Entonces, debido a que restauramos la base de datos de todos estos usuarios como usuario postgres (después de que el usuario foo haya creado una base de datos goo),
$ sudo -u postgres psql -d goo -f gee.dump
La barra de usuario no tiene privilegios de acceso a la base de datos.Pero dentro de la base de datos, todos los privilegios están bien, para todos los usuarios, en esquemas y tablas.
goo=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
goo | foo | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
¿Por qué no se restauran los privilegios de acceso a la base de datos?
Solución
¿Por qué no se restauran los privilegios de acceso a la base de datos?
Es un error o un descuido del diseño..Aunque quien respondió a ese informe no lo cree así.
pg_dumpall --globals-only
no descarga derechos sobre la base de datos.Tampoco lo hace pg_dump
como parte del volcado de la base de datos.
Por lo tanto, las subvenciones a las bases de datos sólo se incluyen en un informe completo. pg_dumpall
.
Haré algo de ruido tocando este hilo.