Postgresql

在 AWS RDS 上以 postgres 使用者身份連接以將擴展安裝到 pg_catalog

  • March 28, 2021

我需要連接到我們的 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

通常不建議citextpg_catalog系統架構中安裝其他模組。(一些例外有模式預設。)將其安裝到public或一些專用模式。

已安裝擴展的“home”模式需要位於search_path. 手冊:

包含citext運算符的模式必須在目前 search_path(通常public);text如果不是,則將呼叫正常的區分大小寫的運算符。

您可以輕鬆地search_path為一個/一些/所有使用者或數據庫或使用者/數據庫組合或臨時或目前會話或一般設置:

引用自:https://dba.stackexchange.com/questions/150811