Instalar PostgreSQL 10 no CentOS 7
Conteúdo do post.
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. =]