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.
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.
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
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