2013-03-02 181 views
1

我已經爲我的Postgres數據庫創建了一個用戶,但是我無法使用我設置的用戶訪問數據。爲什麼我創建的postgres用戶被拒絕訪問表?

在Python殼我已經運行下面的代碼:

>>> import psycopg2 

>>> conn=psycopg2.connect(
database="db", 
user="postgres", 
host="/tmp/", 
password="opensesame" 
) 

>>> cur = conn.cursor() 

>>> state = 'Arkansas' 

>>> cur.execute("SELECT city FROM table WHERE state = %s", (state,)) 

Traceback (most recent call last): 
    File "<pyshell#8>", line 1, in <module> 
    cur.execute("SELECT city FROM table WHERE state = %s", (state,)) 
ProgrammingError: permission denied for relation table 

成爲超級用戶,我曾嘗試:

db=# ALTER USER postgres SET TO default 

,但它並沒有幫助

我需要得到此用戶訪問此表,任何幫助將不勝感激。感謝您的觀看。

+0

我相信您的主機應該是IP或主機名 – dm03514 2013-03-02 00:15:46

+0

您是否爲Openseaseme數據庫設置了Postgres的用戶權限?你必須明確授予它權限。 – gmaliar 2013-03-02 00:16:14

+0

@Guy不,我沒有。我是postgres noob。如果你發佈了關於如何做到這一點的鏈接,或者告訴我它在文檔中的位置,我會除了答案(如果有效的話)。或者你可以成爲一個親愛的人,向我展示命令作爲這個問題的答案。 – 2013-03-02 00:21:04

回答

1

試試這個, 日誌向Postgres

sudo -u postgres psql

然後輸入\l它會列出所有的表,你會看到你創建的數據庫列表,

然後

GRANT ALL ON db TO postgres;

如果一切順利您現在應該再次做\l,看到你現在有特權。

+0

感謝您的幫助。完美工作 – 2013-03-02 07:35:29

0

在我的代碼,我收到錯誤消息:

ProgrammingError: permission denied for relation author 

雖然:

GRANT ALL ON db TO postgres; 

可以解決此錯誤一些,我後來位於: Permission denied for relation

,發現您可能想要命名關係,序列或表格而不是數據庫。根據上面的鏈接,授予數據庫權限可能與訪問連接有關,而不是通過遞歸遍歷表,關係和序列並授予所有這些權限。

至少,如果遇到此錯誤,請閱讀本文和該文章,看看是否有人能解決問題。