2013-03-20 68 views
174

我試圖運行簡單的SQL命令:權限被拒絕的關係

select * from site_adzone; 

,我得到這個錯誤

ERROR: permission denied for relation site_adzone 

可能是什麼問題就在這裏?

我也試着選擇其他表,並得到同樣的問題。我也試着這樣做:

GRANT ALL PRIVILEGES ON DATABASE jerry to tom; 

,但我從控制檯

WARNING: no privileges were granted for "jerry" 

這種反應你有一些想法什麼都可以錯了嗎?

+0

我不知道如何更新權限,這樣我可以閱讀DB – bla0009 2013-03-20 10:23:14

+1

/寫您需要授予必要的特權:HTTP:// WWW。 postgresql.org/docs/current/static/ddl-priv.html和http://www.postgresql.org/docs/current/static/sql-grant.html – 2013-03-20 10:32:40

+2

歡迎來到SO!對於這個問題,您可能會在dba.stackexchange.com上獲得更多幫助,儘管您可能會發現同樣多的snide評論:) – 2013-03-28 04:09:59

回答

219

對數據庫的GRANT不是你所需要的。直接授予表格。

授予數據庫權限主要用於授予或撤銷連接權限。這允許您指定誰可以在數據庫中執行任何操作,如果他們有足夠的其他權限。

你想代替:

GRANT ALL PRIVILEGES ON TABLE side_adzone TO jerry; 

這將需要這個問題的關心。

+0

我試過這個 授予所有將表site_adzone上的權限設置爲jerry; 並得到了這個迴應 錯誤:權限被拒絕關係site_adzone – bla0009 2013-03-20 12:19:57

+5

作爲超級用戶運行它,像postgres。 – 2013-03-20 12:21:07

+11

這可以成爲快捷方式嗎?在所有表上授予所有特權? – Shadur 2014-04-08 11:17:07

132

發佈Ron E對所有表的授予權限的回答,因爲它可能對其他人有用。

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry; 
+2

這一個是正確的答案!另一個只適用於一個表的許可 – stackdave 2016-11-28 07:44:02

+7

您可能還需要對'ALL SEQUENCES'和'ALL FUNCTIONS'執行類似的命令。 – Pistos 2017-06-27 05:37:30

29

連接到正確的數據庫第一,然後運行:

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry; 
+0

感謝連接到正確的數據庫是不是我更早做! – asgs 2017-09-22 09:10:53

+2

連接到正確的數據庫使HUGE dufference :)'\ connect databasename;' – 2018-01-22 10:54:39

+0

這。我一直與「postgres」連接。謝謝! – 2018-02-05 04:28:24

5

要授予權限對於現有的表使用:

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA <schema> TO <role> 

要指定將被應用到默認權限未來表使用:

ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> 
    GRANT <privileges> ON TABLES TO <role>; 

例如

ALTER DEFAULT PRIVILEGES IN SCHEMA public 
    GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO admin; 

如果使用SERIALBIGSERIAL列,那麼你可能會想爲SEQUENCES這樣做,否則你INSERT將失敗(Postgres 10's IDENTITY不會從問題的困擾,並建議在SERIAL類型) ,即

ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON SEQUENCES TO <role>; 

另見我的回答PostgreSQL Permissions for Web App更多的細節和可重複使用的腳本。

編號:

GRANT

ALTER DEFAULT PRIVILEGES