2017-07-14 88 views
4

我需要授予主用戶(MasterUsername)對pg_catalog的訪問權限。Amazon RDS Postgres - >授予pg_catalog

GRANT USAGE ON SCHEMA pg_catalog TO <master-user>; 

在運行,我得到了如下警告: 警告:沒有特權被授予「pg_catalog」。

從本質上講,我有一個自動化的腳本,我在那裏創建數據庫,我設置的搜索路徑並:

SET search_path = <my-schema>, pg_catalog; 
CREATE TYPE <type> AS (
id bigint, 
name character varying); 

我得到以下錯誤

Caused by: org.postgresql.util.PSQLException: ERROR: permission denied for schema pg_catalog 

從本質上講,這不是讓我創建類型,因爲pg_type表存在於pg_catalog中。如何創建類型?

我不知道授予使用權是否有幫助?如果還有其他解決方法,請讓我知道。

回答

1

授予使用權限只會讓您能夠訪問模式的對象,創建新對象將需要在該模式上創建特權。

+0

是的我知道,我只是想添加pg_catalog到搜索路徑。問題是我在嘗試授予角色時遇到了這個錯誤。有什麼辦法可以在AWS RDS – Pavanraotk

+0

中授予訪問權您是在嘗試在pg_catalog模式內創建對象,還是隻需訪問pg_catalog的某個對象即可在其他位置創建對象。 –

+0

我需要在pg_type中創建類型,當然還要將postgis函數的權限更改爲我的數據庫用戶。 – Pavanraotk

0

我爲此工作的方式非常簡單,我使用CREATE ROLE postgres創建了一個角色postgres,我將它分配給我的用戶。

加入到搜索路徑公衆和SET search_path=public,<database>

數據庫分配這我的用戶居然給我,我需要創建自定義pg_type,使用模式pg_catalog在公共架構中的所有權利。這是如何工作的?我不知道,可能是postgres傢伙可以回答這個問題嗎?或者AWS RDS傢伙可以回答這個問題。其次,我在使用pg_functions和擴展Postgis的函數時遇到了另一個問題,即使他們通過將角色postgres角色添加到需要訪問函數的用戶來解決。

我仍然認爲這是一個解決方法,而不是一個直接的修復,或者可能是一個修復,但應該有一些文件(我沒有找到)。