本章節提供(gong)基于(yu)root用(yong)戶的PostgreSQL插件管理方案,下(xia)列(lie)插件無(wu)需(xu)用(yong)戶手動創(chuang)建(jian),其他插件均需(xu)要參考本章節內容(rong)手動創(chuang)建(jian)。
- auto_explain
- passwordcheck
- pg_profile_pro
- pg_sql_history
- plpgsql
- wal2json
- test_decoding
說明RDS for PostgreSQL插(cha)件(jian)是數據(ju)庫級(ji)生效,并不(bu)是全局生效。因此創建插(cha)件(jian)時需(xu)要在對(dui)應的業務庫上進行手動創建。
RDS for PostgreSQL 11、RDS for PostgreSQL 12和RDS for PostgreSQL 13的最(zui)新小版(ban)本(ben),支(zhi)持(chi)以root用(yong)戶通過社區的方(fang)式來創建(create extension)、刪除(drop extension)插件。
創建插件
以root用(yong)戶連接需(xu)要創建插件的數據庫(ku),執行如下SQL創建插件。
select control_extension('create',' <EXTENSION_NAME> ', ' ');
- EXTENSION_NAME為插件名稱,請參見支持的插件列表。
- SCHEMA為模式名稱,指定創建插件的模式位置,不指定該參數時默認為public模式。
示例如下:
創建postgis插件,創建位置為 public schema 。
-- 指定創建插件schema位置為public
select control_extension('create','postgis', 'public');"
control_extension ???????create postgis successfully.
(1 row)
-- schema參數未指定時,默認schema位置為public
select control_extension('create', 'postgis');
control_extension ???????create postgis successfully.
(1 row)
刪除插件
以root用戶連(lian)接需(xu)要創建插(cha)(cha)件的數(shu)據庫,執行(xing)如下SQL刪除插(cha)(cha)件。
select control_extension('create',' <EXTENSION_NAME> ', , ' ');
- EXTENSION_NAME為插件名稱,請參見支持的插件列表。
- SCHEMA為模式名稱,在刪除插件時參數無意義,可以不指定該參數。
示例如下:
select control_extension('drop','postgis');
control_extension
----------------------------
drop postgis successfully.
(1 row)
常見報錯
- 場景一
ERROR: ?permission denied for function control_extension
解決方法:未使用root用戶執行control_extension函數,需更改連接用戶為 root 。
- 場景二
ERROR: ?function control_extension(unknown, unknown) is not unique
解決方法(fa):在(zai)不指定schema時,可能存在(zai)同(tong)名函(han)數,導致函(han)數不唯一無法(fa)運行,可選擇添加schema參數重(zhong)試(shi)。
- 場景三
ERROR: ?function control_extension(unknown, unknown) does not exist
解決方法:control_extension函(han)數(shu)在postgres庫不存在,postgres庫作為(wei)RDS運維庫,禁止創建插件。