Tenho um servidor PostgreSQL 9.5 no qual tenho scripts que criam funções e bancos de dados para usuários automaticamente. Dentro desses bancos de dados, seria útil habilitar extensões específicas (por exemplo, pgcrypto), mas, pelo que entendi, é preciso ser um superusuário para executar o CREATE EXTENSION
. Existe uma maneira de habilitar essas extensões sem fazer login manualmente com uma conta de superusuário?
relate perguntas
-
Posso ativar o PITR depois que o banco de dados foi usado
-
Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo
-
Os procedimentos armazenados impedem a injeção de SQL?
-
Sequências Biológicas do UniProt no PostgreSQL
-
Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?
Dos documentos sobre Extensões,
O valor não está definido em
pgcrypto.control
, portanto, o padrão é true, o que requer um SuperUser.Isso significa que você não pode ser
CREATE EXTENSION
o mero proprietário do banco de dados, apesar do que os documentos em CREATE EXTENSION levam você a acreditar.Tentei arduamente configurá-lo para
false
, e sem alegria. C é uma linguagem não confiável e você obteráDos documentos em pg_language
... é claro que você pode
c
confiarUPDATE pg_language set lanpltrusted = true where lanname = 'c';
como um superusuário. EntãoCREATE EXTENSION pgcrypto
funcionará bem como um não superusuário. Mas isso soa como uma má ideia se você tiver que se preocupar com seus usuários fazendo upload da fonte para seu diretório de extensão e depois instalando-a no banco de dados. Ou seja, eu não iria tão longe. Eu encontraria outra maneira de esfolar este gato.