Preciso carregar a extensão uuid no meu banco de dados, que está sendo criado em tempo de execução. O usuário que criou o db não é superusuário, ela só tem as permissões "CREATEDB".
Existe uma maneira de fazer isso? Obrigado.
Preciso carregar a extensão uuid no meu banco de dados, que está sendo criado em tempo de execução. O usuário que criou o db não é superusuário, ela só tem as permissões "CREATEDB".
Existe uma maneira de fazer isso? Obrigado.
Vejo duas possibilidades:
1.
Instale a extensão em um banco de dados modelo (apenas um banco de dados regular) e use-o como modelo para
CREATE DATABASE
:Isso copia todas as extensões instaladas no novo banco de dados. Seu usuário obviamente pode fazer isso .
Além disso, se ela criou o banco de dados, ela deve ter os privilégios necessários para executá-lo de
CREATE EXTENSION
qualquer maneira. Cito o manual :2.
Crie uma
SECURITY DEFINER
função executando todas as instruções DML necessárias, pertencentes a um superusuário. Revogue todos os privilégiospublic
e concedaEXECUTE
ao papel do usuário:Leia o capítulo "Escrevendo funções do SECURITY DEFINER com segurança" no manual.