Maneira apropriada de conceder permissões no PostgreSQL

1

Eu sou novo no PostgreSQL e estou tendo um pouco de dificuldade para encontrar qualquer informação sobre como conceder permissões a um usuário no banco de dados que ele possui. Eu li algumas fontes que dizem que o proprietário tem todas as permissões, mas não parece funcionar para mim. Ainda tive que conceder permissões para executar uma instrução select.

Eu também li algumas coisas que dizem que o PostgreSQL simplesmente não suporta a concessão de múltiplas tabelas em um banco de dados de uma vez, então eu espero que eles estejam desatualizados.

Aqui está o que eu fiz até agora:

# Create the user
createuser -SDRPE demo

# Create the database
createdb demo -O demo

# Import schema
psql -f myfile.sql demo

# Grant Permissions
???

Alguém pode me dizer a melhor maneira de fazer isso? Atualmente, estou escrevendo tudo isso dentro de uma tarefa do Rake, para que eu possa recuperar tecnicamente todas as tabelas no banco de dados e iterá-las, mas parece uma solução desajeitada e horrível. Parece que estou perdendo alguma coisa. Quaisquer pensamentos / comentários / links seriam muito apreciados.

Editar 1: Como uma nota rápida, todos esses comandos estão sendo executados como root, que é um superusuário no banco de dados com a IDENT SAMEUSER de autenticação especificada em pg_hba.conf caso isso torne qualquer diferença.

    
por Topher Fangio 10.11.2009 / 23:31

3 respostas

1

Você pode tentar

psql dbname username < filename.sql

Então você usaria

psql demo demo < myfile.sql

Não sei ao certo onde o arquivo sql está indo porque você não está especificando o banco de dados em seu script.

    
por 11.11.2009 / 00:25
0

Alguns exemplos podem ser:

praticamente tudo: conceder todos os privilégios na demonstração do banco de dados para demonstração;

conceda alguns seleções simples: conceder seleção na tabela foo para demonstração;

mais que selecionar: conceder seleção, inserir, atualizar, excluir na tabela foo para demonstração;

Mais informações aqui: link

    
por 11.11.2009 / 00:10
0

Se tudo o que você deseja fazer é conceder ao usuário 'demo' a capacidade de ler / gravar / modificar o banco de dados 'demo', você já está pronto, porque o proprietário do banco de dados tem todos os privilégios necessários por padrão. p>

Se você precisar de privilégios mais específicos para mais de um usuário, poderá CREATE USER um novo usuário e privilégios GRANT para um ou mais objetos.

Para acesso não local ao banco de dados, recomendo vivamente o ajuste do seu pg_hba. conf

    
por 11.11.2009 / 00:14