Neste artigo veremos como instalar o PostgreSQL 10 no CentOS 7, se você está com pressa ou não tem interesse nos detalhes da instalação vá até o final do artigo e use o script que contém todos os comandos necessários, então vamos lá.

O objetivo deste tutorial é instalar e configurar uma instância do PostgreSQL destinada ao ambiente de desenvolvimento, várias medidas necessárias para um ambiente de produção são ignoradas.

Instalação

Antes de instalar precisamos fazer o CentOS ignorar o PostgreSQL presente em seus repositórios, para isso execute o texto abaixo no terminal do CentOS.

sudo sed -e '/exclude=postgresql\*/d' \
  -e '/^\[base\]$\|^\[updates\]$/a exclude=postgresql\*' \
  -i /etc/yum.repos.d/CentOS-Base.repo

Tomado as devidas precauções podemos prosseguir com a instalação, note que estamos utilizando os pacotes oficiais do PostgreSQL.

sudo yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm && \
sudo yum install -y postgresql10 postgresql10-server

Agora é necessário executar o setup para criar os arquivos necessários.

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb

Configurações de acesso

Primeiramente vamos permitir o acesso de clientes remotos.

sudo sed -e "/listen_addresses = '\*'/d" \
  -e "/#listen_addresses = 'localhost'/a listen_addresses = '\*'" \
  -i /var/lib/pgsql/10/data/postgresql.conf

E agora vamos liberar o acesso remoto para todos os usuários, banco de dados e endereços IP.

sudo sed 's/host.*all.*all.*127.0.0.1.*ident/host all all all md5/' \
  -i /var/lib/pgsql/10/data/pg_hba.conf

Inicialização

Após a etapa de instalação, vamos configurar o início automático junto com a inicialização do CentOS e iniciar o PostgreSQL.

sudo systemctl enable postgresql-10.service && \
sudo systemctl start postgresql-10.service

Caso ocorra algum problema, você pode verificar o que deu errado executando o comando abaixo.

sudo systemctl status postgresql-10.service

Criar banco de dados e usuário

Com o PostgreSQL funcionando, chegou a hora de finalmente criar um usuário e um banco de dados, neste caso o nome de usuário e a senha serão o valor retornado pela variável $USER, ou seja o usuário do CentOS que executou o comando, mas você é livre para utilizar os valores que desejar.

sudo -u postgres createdb $USER
sudo -u postgres psql -U postgres -d $USER -c "CREATE ROLE $USER WITH SUPERUSER LOGIN PASSWORD '$USER';"

Para verificar se tudo deu certo, execute o comando abaixo e você deverá acessar o CLI do PostgreSQL sem precisar informar nenhum parâmetro.

psql

Caso não consiga acessar, sugiro que você desinstale complemente o PostgreSQL com o comando abaixo e refaça o tutorial desde o início.

sudo yum remove -y pgdg-centos10 postgresql10 postgresql10-server && \
sudo rm -rf /var/lib/pgsql/10

Somente para os apressados

Se você está com pressa ou não tem interesse nos detalhes da instalação, o script abaixo é um compilado de todos os comandos presentes neste artigo, execute-o e o PostgreSQL será instalado.

Se você seguiu o passo a passo não precisa executar este script.

sudo sed -e '/exclude=postgresql\*/d' \
  -e '/^\[base\]$\|^\[updates\]$/a exclude=postgresql\*' \
  -i /etc/yum.repos.d/CentOS-Base.repo && \
sudo yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm && \
sudo yum install -y postgresql10 postgresql10-server && \
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb && \
sudo sed -e "/listen_addresses = '\*'/d" \
  -e "/#listen_addresses = 'localhost'/a listen_addresses = '\*'" \
  -i /var/lib/pgsql/10/data/postgresql.conf && \
sudo sed 's/host.*all.*all.*127.0.0.1.*ident/host all all all md5/' \
  -i /var/lib/pgsql/10/data/pg_hba.conf && \
sudo systemctl enable postgresql-10.service && \
sudo systemctl start postgresql-10.service && \
sudo -u postgres createdb $USER && \
sudo -u postgres psql -U postgres -d $USER -c "CREATE ROLE $USER WITH SUPERUSER LOGIN PASSWORD '$USER';"

Concluindo

Chegamos ao fim deste tutorial, agora você tem instalado e configurado no seu CentOS um PostgreSQL para ser utilizado em ambientes de desenvolvimento, até à próxima. =]

Fontes