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;
