Nos documentos sobre extensões,
superusuário (booleano) Se esse parâmetro for verdadeiro (que é o padrão), apenas os superusuários poderão criar a extensão ou atualizá-la para uma nova versão. Se estiver definido como false, apenas os privilégios necessários para executar os comandos no script de instalação ou atualização serão necessários.
O valor não está definido pgcrypto.control
, portanto, é padronizado como true, o que requer um superusuário.
Isso significa que você não pode ser CREATE EXTENSION
o mero proprietário do banco de dados, apesar do que os documentos sobre CREATE EXTENSION levam você a acreditar.
Eu tentei arduamente configurá-lo false
, e sem alegria. C é uma linguagem não confiável e você terá
ERRO: permissão negada para o idioma c
Dos documentos em pg_language
Somente superusuários podem criar funções em idiomas não confiáveis.
... é claro que você pode c
confiar UPDATE pg_language set lanpltrusted = true where lanname = 'c';
como superusuário. Então CREATE EXTENSION pgcrypto
funcionará bem como um não superusuário. Mas isso parece uma péssima idéia se você precisar se preocupar com o upload de código-fonte dos usuários para o diretório de extensões e a instalação no banco de dados. Ou seja, eu não iria tão longe. Eu encontraria outra maneira de esfolar esse gato.
template1
e, em seguida, a criação de cada banco de dados de usuário detemplate1
comoCREATE DATABASE foo OWNER=userfoo TEMPLATE=template1
?