wiki:server/pgsql
Last modified 8 years ago Last modified on 06/20/18 12:48:18

PostgreSQL + PostGIS

Responsáveis: Gribeiro e Raphael Willian da Costa

Data: 08/06/2018

Site: https://www.postgresql.org/ e https://github.com/TerraMA2/docker

Versão: 10

Tópicos

Como levantar uma instância do PostgreSQL/PostGIS?

A imagem *docker* PostgreSQL/PostGIS é mantida neste link: mdillon/postgis. Para execução do container PostgreSQL/PostGIS, utilize o seguinte comando:

docker run --detach \
           --restart unless-stopped \
           --name terrama2_pg \
           --publish 5432:5432 \
           --volume terrama2_pg_vol:/var/lib/postgresql/data \
           --env POSTGRES_PASSWORD=mysecretpassword \
           mdillon/postgis

Essas diretivas definem:

  • --detach será executado em background;
  • --name nome do container a ser criado;
  • --restart define um comportamento de reinicialização do container. Neste caso, será sempre reiniciado quando o serviço cair, exceto quando é parado manualmente;
  • --publish disponibiliza a porta a ser acessada pelo host. 5432;
  • --volume representa um volume externo para armazenar todas as tabelas do banco de dados;
  • --env variáveis para customizar a inicialização do container. Neste caso, definimos a senha do *postgres* como *mysecretpassword*

Acessar o container

Para acessar o container do PostgreSQL diretamente, utilize o seguinte comando:

docker exec -it terrama2_pg bash

Para acessar o PostgreSQL através do *psql*:

psql -U postgres -h localhost

Projetos e base de dados

O servidor do TerraMA² está localizado no seguinte endereço: *terrama2.dpi.inpe.br*

Os projetos ativos no TerraMA² são:

  • acre
  • ciaden
  • curso
  • naturatins
  • petro
  • terrama2q

Todos os projetos estão armazenados dentro do container *terrama2_pg*, organizados dentro de suas próprias base de dados.

Criação de usuários

Para criação de cada usuário dentro da base de dados, utilize o seguinte comando:

Conecte ao PostgreSQL

psql -U postgres -h localhost
CREATE ROLE usuario LOGIN CREATEDB  PASSWORD 'senha';

Criação do banco:

CREATE DATABASE banco TEMPLATE template1 OWNER usuario;

Cancele o acesso publico:

REVOKE CONNECT ON DATABASE banco FROM PUBLIC;

Configure adequadamente o privilégio de acesso:

# Assegurando privilégios
GRANT CREATE ON DATABASE banco TO usuario;
GRANT CONNECT ON DATABASE banco TO usuario;
GRANT ALL ON ALL TABLES IN SCHEMA public TO usuario;