Criar um utilizador e uma base no PostgreSQL, e ligar com o psql

Num VPS com PostgreSQL já instalado, entre como o utilizador do sistema postgres com sudo -u postgres psql, e crie o utilizador e a base com dois comandos: CREATE USER ... e CREATE DATABASE ... OWNER .... Depois ligue-se com psql -h 127.0.0.1 -U utilizador -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 utilizador, com uma palavra-passe forte (o gerador de senhas serve):CREATE USER loja WITH PASSWORD 'palavra-passe-forte';
3 Crie a base e entregue-a a esse utilizador:CREATE DATABASE loja OWNER loja;
4 Confira com \l (lista as bases) e \du (lista os utilizadores). Saia com \q.
5 Ligue-se como o novo utilizador, por rede local:psql -h 127.0.0.1 -U loja -d lojaO psql pede a palavra-passe.
6 Na aplicação, use o servidor 127.0.0.1, a porta 5432, e os três valores: base, utilizador e palavra-passe.

Comandos que vai usar muitas vezes

Comando O que faz
\l Lista as bases de dados.
\c nome Passa a trabalhar noutra base.
\dt Lista as tabelas da base actual.
\du Lista utilizadores (papéis).
ALTER USER loja WITH PASSWORD 'nova'; Muda a palavra-passe.
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 ficheiro local e espera que o utilizador do sistema tenha o mesmo nome. Com o -h 127.0.0.1 pede a palavra-passe, 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 utilizador

Para um segundo utilizador 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 omissão. Para retirar um acesso, existe o REVOKE, que faz o contrário de GRANT.

Não dê à aplicação o utilizador postgres. Esse é o administrador de tudo. Um utilizador por aplicação, dono só da sua base, limita o estrago se algo correr mal. Para guardar a palavra-passe fora do comando, o psql lê-a de um ficheiro ~/.pgpass, que deve ser só seu (chmod 600).

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

Abrir um pedido de suporte

VEJA TAMBÉM

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

Cópias com mysqldump e pg_dump

Até onde vai o nosso suporte

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

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

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?