Preciso me conectar à nossa instância AWS RDS PostgreSQL 9.5 para poder adicionar a citext
extensão ao pg_catalog
esquema para que fique disponível para todos os esquemas (o PG precede pg_catalog
o início do search_path
por padrão).
Eu sou facilmente capaz de fazer isso na minha máquina local:
> sudo su - postgres
> psql
> \c mydatabase
> CREATE EXTENSION IF NOT EXISTS citext SCHEMA pg_catalog;
> \q
> exit
Se eu fizer login no RDS usando uma conexão direta, como mostram os documentos da AWS, recebo permission denied for schema pg_catalog
quando tento CREATE EXTENSION
:
psql
--host=myrdsawshostname
--port=5432
--username=myusername
--password
--dbname=mydatabase
Esta é a única maneira que conheço de conectar e só consigo conectar como "myusername" e não "postgres".
O que eu estou fazendo errado aqui?
Sua tentativa de gravar no
pg_catalog
esquema provavelmente falha porque você não tem um superusuário no RDS, apenas uma função com privilégios administrativos limitados. E a Amazon é inteligente o suficiente para impedir que os usuários mexam nos catálogos do sistema. Ou seja: semCREATE
privilégio no schemapg_catalog
.Geralmente não é aconselhável instalar módulos adicionais como
citext
nopg_catalog
esquema do sistema. (Algumas exceções têm o esquema predefinido.) Instale-o empublic
ou em algum esquema dedicado.O esquema "home" da extensão instalada precisa estar no formato
search_path
. O manual:Você pode definir facilmente
search_path
para um / alguns / todos os usuários ou bancos de dados ou combinações de usuário / banco de dados ou temporariamente ou para a sessão atual ou geralmente: