2011-10-13 14 views
15

मैं एक उपयोगकर्ता मिल गया है: user_x कि PostgreSQL पर एक डेटाबेस का मालिक है और जैसे किसी भी भूमिका विशेषता नहीं है (CREATE_DB, SuperUser, ...)postgresql डेटाबेस स्वामी डेटाबेस तक नहीं पहुंच सकता - "कोई संबंध नहीं मिला।"

यह user_x (पूरे डीबी उपयोग कर सकते हैं पर टेबल बना, उसकी डेटाबेस), डेटा का चयन, डालें और अद्यतन करें।

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) 

और निम्नलिखित भूमिकाओं:

मैं डेटाबेस की इस सूची मिल गया है

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 

... 

ठीक है, जब तक मैं डेटा डंप और एक अन्य PostgreSQL सर्वर पर बहाल।

आयात करने के बाद एक और सर्वर पर साथ डेटा और psql लॉग ऑन (एक ही डाटाबेस नाम और उपयोगकर्ता के साथ) के साथ \ घ आदेश जबाब: "कोई संबंध पाया गया।"

तो मैं आयातित डेटाबेस सर्वर पर user_x और टाडा user_x फिर से संबंधों और डेटा देख सकते हैं करने के लिए SuperUser जोड़ा भूमिका।

लेकिन उपयोगकर्ता_x को इस डेटाबेस तक पहुंचने के लिए सुपरसर्स विशेषाधिकार होने की आवश्यकता नहीं है।

इस आयातित डंप के साथ क्या गलत है? क्या कोई अब इसे हल करने के लिए करता है?

उत्तर

47

शायद public स्कीमा के लिए स्कीमा अनुमतियां उलझ गईं। दोनों साइटों पर \dn+ का आउटपुट क्या है?

उत्पादन इस तरह दिखना चाहिए: =UC/postgres हिस्सा गायब है

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

हैं, तो आप

grant all on schema public to public; 
+0

हाय ए.एच. निंजा कौशल आप होनी चाहिए के साथ इसे बहाल कर सकते हैं। तुम सही थे! एक्सेस विशेषाधिकार शून्य था। – AndreDurao

+3

आह मेरे जीवन के उन 3 घंटों के लिए बहुत धन्यवाद कि आपने मुझे अभी इस के साथ वापस दिया है! – cjauvin

+0

अनुमति में 'c' क्या दर्शाता है, इसलिए मैं इसे स्वयं जोड़ सकता हूं, सभी अनुमति जोड़ने के बजाय मैं जोड़ना नहीं चाहता हूं? –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^