2011-10-13 23 views
15

Tengo un usuario: user_x que posee una base de datos PostgreSQL y no tiene ningún atributo role como (CREATE_DB SUPERUSUARIO, ...)El propietario de la base de datos postgresql no puede acceder a la base de datos: "No se encontraron relaciones".

Este user_x puede acceder a toda la base de datos, crear tablas (en su base de datos), seleccione, inserte y actualice datos.

Tengo esta lista de bases de datos:

mydatabase=> \l 
            List of databases 
      Name   | Owner | Encoding | Collation | Ctype | Access privileges 
-------------------------+----------+-----------+-----------+-------+----------------------- 
postgres    | postgres | SQL_ASCII | C   | C  | 
mydatabase    | user_x | UTF8  | C   | C  | 
template0    | postgres | SQL_ASCII | C   | C  | =c/postgres   + 
         |   |   |   |  | postgres=CTc/postgres 
template1    | postgres | SQL_ASCII | C   | C  | =c/postgres   + 
         |   |   |   |  | postgres=CTc/postgres 
whoami     | postgres | SQL_ASCII | C   | C  | 
(6 rows) 

y las siguientes funciones:

mydatabase=> \du 
         List of roles 
Role name |   Attributes    | Member of 
-----------+-----------------------------------+----------- 
postgres | Superuser, Create role, Create DB | {} 
user_x |         | {} 

mydatabase=> \d 
         List of relations 
Schema |    Name    | Type | Owner 
--------+-----------------------------------+----------+---------- 
public | addresses       | table | user_x 
public | addresses_id_seq     | sequence | user_x 
public | assignments      | table | user_x 
public | assignments_id_seq    | sequence | user_x 

... 

bien, hasta que me volcado de datos y restaurarla en otro servidor PostgreSQL.

Después de importar los datos con el otro servidor (con el mismo nombre de usuario y la base de datos) y se conectó psql la \ d respuesta comando con: "No se encontraron relaciones."

Así que agregué SUPERUSER rol a usuario_x en el servidor de base de datos importado y tadã usuario_x puede volver a ver las relaciones y los datos.

Pero user_x no necesita tener privilegio SUPERUSER para acceder a esta base de datos.

¿Qué pasa con este volcado importado? ¿Alguien ahora cómo resolver esto?

Respuesta

47

Quizás los permisos de esquema para el esquema public se dañaron. ¿Cuál es el resultado de \dn+ en ambos sitios?

La salida debería tener este aspecto:

      List of schemas 
    Name | Owner | Access privileges |  Description  
--------+----------+----------------------+------------------------ 
public | postgres | postgres=UC/postgres | standard public schema 
        : =UC/postgres   
(1 row) 

Si la parte =UC/postgres no está presente, se puede restaurar con

grant all on schema public to public; 
+0

Hola A. H. habilidades ninja que debe tener. ¡Usted tenía razón! Los privilegios de acceso eran nulos. – AndreDurao

+3

¡Ahh muchas gracias por esas 3 horas de mi vida que me acabas de devolver con esta! – cjauvin

+0

¿Qué representa la 'c' en el permiso, por lo que puedo agregar eso por sí mismo, en lugar de agregar todos los permisos, no quiero agregarlos? –

Cuestiones relacionadas