Instalação e configuração do PostgreSQL

O PostgreSQL é um sistema gerenciador de banco de dados objeto relacional (SGBD), e hoje é um dos mais avançados sistemas gerenciadores de banco de dados de código aberto com mais de 15 anos de desenvolvimento. É extremamente robusto e confiável, além de ser extremamente flexível e rico em recursos.

O PostgreSQL (conhecido anteriormente como Postgres95) derivou do projeto POSTGRES da universidade de Berkley, cuja última versão foi a 4.2. O POSTGRES foi originalmente patrocinado pelo DARPA (Agência de Projetos de Pesquisa Avançada para Defesa), ARO (Departamento de Pesquisa Militar), NSF (Fundação Cinetífica Nacional) e ESL Inc. A implementação do projeto POSTGRES iniciou em 1986, já em 87 tornou-se operacional.

O PostgreSQL conta com recursos como:

  • Consultas complexas;
  • Chaves estrangeiras;
  • Integridade transacional;
  • Controle de concorrência multi-versão;
  • Suporte ao modelo híbrido objeto-relacional;
  • Ele tem facilidade de Acesso;
  • Gatilhos;
  • Visões;
  • Linguagem Procedural em várias linguagens (PL/pgSQL, PL/Python, PL/Java, PL/Perl);
  • Indexação por texto;
  • Estrutura para guardar dados Georeferenciados.
INSTALAÇÃO
[root@notebook ~]# yum install -y postgresql-server.x86_64
[root@notebook ~]# systemctl enable postgresql
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to /usr/lib/systemd/system/postgresql.service.

Vamos configurar o banco para startá-lo:

[root@notebook pgsql]# postgresql-setup initdb
Initializing database ... Full path required for exclude: net:[4026532620].
Full path required for exclude: net:[4026532620].
Full path required for exclude: net:[4026532620].
OK

Verificamos seu arquivo de log:

[root@notebook ~]# cat /var/lib/pgsql/initdb.log
Os arquivos deste sistema de banco de dados pertencerão ao usuário "postgres".
Esse usuário deve ser o dono do processo do servidor também.
O agrupamento de banco de dados será inicializado com configuração regional "pt_BR.UTF-8".
A codificação padrão do banco de dados foi definida para "UTF8".
A configuração de busca textual padrão será definida como "portuguese".
alterando permissões no diretório existente /var/lib/pgsql/data ... ok
criando subdiretórios ... ok
selecionando max_connections padrão ... 100
selecionando shared_buffers padrão ... 32MB
criando arquivos de configuração ... ok
criando banco de dados template1 em /var/lib/pgsql/data/base/1 ... ok
inicializando pg_authid ... ok
inicializando dependências ... ok
criando visões do sistema ... ok
carregando descrições de objetos do sistema ... ok
criando ordenações ... ok
criando conversões ... ok
criando dicionários ... ok
definindo privilégios dos objetos embutidos ... ok
criando esquema informação ... ok
carregando linguagem PL/pgSQL ... ok
limpando banco de dados template1 ... ok
copiando template1 para template0 ... ok
copiando template1 para postgres ... ok

Sucesso. Você pode iniciar o servidor de banco de dados utilizando:

# /usr/bin/postgres -D /var/lib/pgsql/data

ou

/usr/bin/pg_ctl -D /var/lib/pgsql/data -l logfile start

Alteramos o usuário para postgres:

[root@notebook ~]# su - postgres
Último login:Seg Abr 10 15:07:36 -03 2017em pts/0
-bash-4.2$ systemctl start postgresql

Para visualizarmos a versão do banco:


-bash-4.2$ postgres --version
postgres (PostgreSQL) 9.2.18

-bash-4.2$ psql --version
psql (PostgreSQL) 9.2.18

Para acessarmos o banco postgres utilizando o usuário root:

[root@notebook ~]# sudo -u postgres psql postgres
could not change directory to "/root"
psql (9.2.18)
Type "help" for help.

postgres=#

Para acessar seu prompt (usuário postgres):

-bash-4.2$ psql
psql (9.2.18)
Digite "help" para ajuda.

postgres=#

Para criarmos um usuário do banco:

postgres=# create user tadeu password '123456';
CREATE ROLE

Para criar um banco:

postgres=# create database banco_teste owner tadeu;
CREATE DATABASE

Para conectar no banco:

postgres=# \c postgres
Você está conectado agora ao banco de dados "postgres" como usuário "postgres".

Para trocar a senha do usuário postgres:

postgres=# \password postgres
Digite nova senha:
Digite-a novamente:

Alguns comandos básicos:

postgres=# \l # lista os bancos
postgres=# \d # lista todas as tabelas
postgres=# \dS+ tabela # descreve uma tabela
postgres=# \s # histórico de comandos

Para obter ajuda com os comandos:

postgres=# \help
BACKUP E RESTORE

Para fazer drop de um banco:

[root@notebook ~]# sudo -u postgres dropdb banco_teste;

Para fazer backup:

[root@notebook ~]# sudo -u postgres pg_dump banco_teste > dump_banco_teste

Para fazer o restore:

[root@notebook ~]# cd ~postgres/

Criamos o banco:

[root@notebook dump]# sudo -u postgres createdb dvd_rental --owner=tadeu

E efetuamos o restore:

[root@notebook pgsql]# sudo -u postgres pg_restore -d dvd_rental dvdrental.tar

Referências:
https://pt.wikipedia.org/wiki/PostgreSQLhttps://wiki.postgresql.org/wiki/Introdu%C3%A7%C3%A3o_e_Hist%C3%B3rico
https://www.postgresql.org/download/linux/redhat/https://www.postgresql.org/docs/9.1/static/backup-dump.html#BACKUP-DUMP-RESTORE