Criar um usuário e uma base no PostgreSQL, e conectar com o psql

Bancos de DadosMotores e desempenho··· 1.126 visualizações· 3 min de leitura

Num VPS com PostgreSQL já instalado, entre como o usuário do sistema postgres com sudo -u postgres psql, e crie o usuário e a base com dois comandos: CREATE USER ... e CREATE DATABASE ... OWNER .... Depois ligue-se com psql -h 127.0.0.1 -U usuário -d base. Pressupõe um VPS com acesso root, de preferência com Ubuntu 22.04 LTS, e a instalação é sua. Se ainda não instalou, comece por instalar o PostgreSQL.

Passo a passo

1 Entre no PostgreSQL: sudo -u postgres psql. O prompt passa a postgres=#.
2 Crie o usuário, com uma senha forte (o gerador de senhas serve):CREATE USER loja WITH PASSWORD 'palavra-passe-forte';
3 Crie a base e entregue-a a esse usuário:CREATE DATABASE loja OWNER loja;
4 Confira com \l (lista as bases) e \du (lista os usuários). Saia com \q.
5 Ligue-se como o novo usuário, por rede local:psql -h 127.0.0.1 -U loja -d lojaO psql pede a senha.
6 Na aplicação, use o servidor 127.0.0.1, a porta 5432, e os três valores: base, usuário e senha.

Comandos que vai usar muitas vezes

Comando O que faz
\l Lista os bancos de dados.
\c nome Passa a trabalhar em outra base.
\dt Lista as tabelas da base atual.
\du Lista usuários (papéis).
ALTER USER loja WITH PASSWORD 'nova'; Muda a senha.
DROP DATABASE loja; Apaga a base. Não tem volta.
«Peer authentication failed» aparece quando tenta psql -U loja sem o -h 127.0.0.1. Sem o -h, o psql liga por um arquivo local e espera que o usuário do sistema tenha o mesmo nome. Com o -h 127.0.0.1 pede a senha, que é o que quer. Outra armadilha: os comandos SQL acabam em ponto e vírgula. Sem ele, o psql fica à espera e parece bloqueado.

Dar acesso só de leitura a outro usuário

Para um segundo usuário que só consulta (um painel de relatórios, por exemplo), crie-o e, dentro da base (\c loja), dê-lhe o essencial: GRANT CONNECT ON DATABASE loja TO leitor; e GRANT SELECT ON ALL TABLES IN SCHEMA public TO leitor;. O primeiro deixa-o entrar, o segundo deixa-o ler as tabelas que já existem. As tabelas criadas mais tarde não entram automaticamente: é preciso repetir o comando ou definir privilégios por padrão. Para retirar um acesso, existe o REVOKE, que faz o contrário de GRANT.

Não dê à aplicação o usuário postgres. Esse é o administrador de tudo. Um usuário por aplicação, dono só da sua base, limita o estrago se algo dar errado. Para guardar a senha fora do comando, o psql lê-a de um arquivo ~/.pgpass, que deve ser só seu (chmod 600).

Tem o PostgreSQL a rodar no VPS e não consegue ligar a aplicação? Mostre-nos a mensagem de erro, sem a senha.

Abrir um pedido de suporte

VEJA TAMBÉM

Permitir conexões remotas ao PostgreSQL num VPS, com segurança

Cópias com mysqldump e pg_dump

Até onde vai o nosso suporte

PRODUTO RECOMENDADO

Hospedagem de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde R$ 36,30/mês (plano de 3 anos, com cupom)

Ver planos
Esta resposta foi útil? Sua resposta nos ajuda a melhorar este artigo.