postgresql: ¿cómo vuelco y restauro roles para un clúster?


27

¿Dónde se almacenan los roles en un clúster y cómo los vuelco?

Hice un pg_dump de un db y luego lo cargué en un clúster diferente, pero recibo muchos de estos errores:

psql:mydump.sql:3621: ERROR:  role "myrole" does not exist 

Entonces, aparentemente, el volcado de mi db no incluye roles. Traté de eliminar la base de datos 'postgres', pero tampoco veo los roles allí.

¿Necesito usar pg_dumpall --roles-only?

Postgresql versiones 8.4.8 y 9.1.4 OS: Ubuntu 11.04 Natty

Respuestas:


37

De la CREATE ROLEdocumentación :

Tenga en cuenta que los roles se definen en el nivel del clúster de la base de datos, por lo que son válidos en todas las bases de datos del clúster.

Como pg_dumpvolca una sola base de datos, no puede extraer roles con esa utilidad. El pg_dumpall --roles-onlycomando que propuso hará el trabajo; sin embargo, es posible que necesite filtrar su salida para que solo se creen los roles deseados en el nuevo clúster.

Los roles se almacenan en el pg_authidcatálogo, que se almacena físicamente en la data/global/subcarpeta de una instalación de PostgreSQL, junto con las otras tablas de todo el clúster. Puede consultar el contenido a pg_authidtravés de la pg_rolesvista.

NOTA : necesitará derechos de superusuario para volcar los roles. De lo contrario, se obtendría un permiso denegado en SELECTel pg_authid- e incluso cuando un superusuario otorga SELECTderechos, se obtendría el mismo error. En este caso, sin embargo, puede enumerar los roles al consultarlos pg_authiddirectamente COPYen un archivo y hacer un poco de magia para crear las declaraciones CREATE ROLEy ALTER ROLEdeclaraciones necesarias .


¿Puede agregar cómo restaurar todos los roles (es decir, no se necesita filtrado)?
Ethan Furman

1
para restaurar todos los roles, simplemente copie y pegue la salida pg_dumpall --roles-onlyen el shell psql deseado. O específico CREATE ROLEy ALTER ROLElíneas
Fernando Fabreti
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.