2016-12-26 38 views
1

我有一個在postgresql中稱爲testview的視圖。授予訪問postgresql中的意見

我創建了一個名爲testuser的新用戶。

我想讓testuser擁有數據庫中所有表和視圖的所有權限。

要做到這一點,我跑以下命令:

GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser; 

GRANT USAGE ON SCHEMA public TO testuser; 

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO testuser; 

TESTUSER現在可以訪問數據庫中的所有表,但如果我嘗試運行SELECT * FROM testview我收到以下錯誤:權限拒絕關係testview。

出了什麼問題? testuser如何訪問testview?

回答

2

我同意它應該工作。有權限GRANT ... ON ALL TABLES也應該包含視圖。

您是否在授予testuser的特權後創建了視圖?如果是這樣,則它不具有與其他表相同的權限。這是因爲GRANT ... ON ALL TABLES的意思是「在當前存在的所有表格上」。要包含你將來創建表/視圖,你可以說:

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO testuser; 

或者,如果你想給超過SELECT,你可以說ALL PRIVILEGES代替。