Postgresql
在 AWS RDS 上以 postgres 使用者身份連接以將擴展安裝到 pg_catalog
我需要連接到我們的 AWS RDS PostgreSQL 9.5 實例,這樣我就可以將
citext
擴展添加到pg_catalog
架構中,以便它可用於所有架構(PG預設情況下會添加pg_catalog
到開頭search_path
)。我很容易在我的本地機器上做到這一點:
> sudo su - postgres > psql > \c mydatabase > CREATE EXTENSION IF NOT EXISTS citext SCHEMA pg_catalog; > \q > exit
如果我使用 AWS 文件顯示的直接連接登錄到 RDS,
permission denied for schema pg_catalog
當我嘗試CREATE EXTENSION
:psql --host=myrdsawshostname --port=5432 --username=myusername --password --dbname=mydatabase
這是我知道如何連接的唯一方法,而且我似乎只能以“myusername”而不是“postgres”連接。
我在這裡做錯了什麼?
您嘗試寫入
pg_catalog
架構可能會失敗,因為您在 RDS 上沒有超級使用者,只是一個具有有限管理員權限的角色。而且亞馬遜足夠聰明,可以防止使用者弄亂系統目錄。即:架構中沒有CREATE
特權pg_catalog
。通常不建議
citext
在pg_catalog
系統架構中安裝其他模組。(一些例外有模式預設。)將其安裝到public
或一些專用模式。已安裝擴展的“home”模式需要位於
search_path
. 手冊:包含
citext
運算符的模式必須在目前search_path
(通常public
);text
如果不是,則將呼叫正常的區分大小寫的運算符。您可以輕鬆地
search_path
為一個/一些/所有使用者或數據庫或使用者/數據庫組合或臨時或目前會話或一般設置: