doc-bd

PostgreSQL no CentOS, via repositório PGDG

Fim do suporte CentOS 7 e 8

Baixe a versão mais recente do CentOS para a instalação

Até o momento da publicação desta matéria o mais recente é o CentOS 9 Stream

Configuração dos repositórios

Para a instalação do PostgreSQL, não é necessário adicionar o repositório epel.
Independente de adicionar ou não, atualize a Distro.
Após a atualização, se foi atualizado o Kernel, reinicie o sistema.

sudo dnf updateinfo
sudo dnf -y update

PostgreSQL via repositório RPM:

Para mais informações acesse o site oficial, PostgreSQL, Download, família Red Hat

Instalar repositório PGDG

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Desative os repositórios PGDG das versões que não serão usadas

Será instalado a versão 16, que é a versão estável mais alta, no momento da publicação desta matéria.
Para instalar outra versão, acesse o site oficial postgresql.org.

sudo dnf -y config-manager --disable pgdg{12,13,14,15} &>> /dev/null

Desativar módulos PostgreSQL embutido:

sudo dnf -qy module disable postgresql

Validar a llista de módulos, se está desativado

sudo dnf module list --disabled

Atualizar a lista de repositórios

sudo dnf -y updateinfo

Instalar PostgreSQL:

sudo dnf install -y postgresql16-server

Verificar se a versão desejada foi instalado corretamente

psql --version

Inicialize o banco de dados e habilite o início automático:

sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16
sudo systemctl status postgresql-16

Alterar arquivo pg_hba.conf

Edite o arquivo /var/lib/pgsql/{VERSAO}/data/pg_hba.conf e adicione no final do arquivo o IP 0.0.0.0 e o IP do servidor para que seja liberado a comunicação do Manager com o banco:

host all all 0.0.0.0/0 trust
host all all 192.168.15.90/24 trust
  1. Autenticação Peer (Padrão):
    • Usado para autenticar conexões locais no PostgreSQL.
    • No entanto, pode causar problemas, como o erro “FATAL: A autenticação do tipo peer falhou”.
    • Para resolver, modifique o arquivo para usar outro método de autenticação, como “md5”.
  2. Autenticação MD5:
    • Ele gera um hash de 128 bits para dados, um algoritmo de resumo de mensagem usado para autenticar mensagens e verificar conteúdo.
    • Para usar, modifique a 1º linha “local” trocando o usuário all para postgres e adicione no final do arquivo pg_hba.conf uma linha como esta*:

      a 1º linha “local”, pode comentar a linha e no final do arquivo adicionar a linha do postgres, se não quiser ficar usando senha até na linha de comando, troque md5 para trust

      local   all     postgres md5
      ...
      local   all     pgadmin md5
      
    • Isso permite que o software gere e verifique o resumo MD5 de cada segmento enviado na conexão TCP.
    • *Crie um usuário no PostgreSQL para usar este método e para fazer tarefas administrativas:

       sudo -u postgres createuser -d -l -P -r -s --replication pgadmin
      

Alterar arquivo postgresql.conf

Ache a linha com listen_addresses, descomente e deixe desta forma:

listen_addresses = '*'  

Ache a linha que tem port = 5432 e se estiver comentado, descomente. Depois salve e saia do editor.

port = 5432

Reiniciar o PostgreSQL

sudo systemctl restart postgresql-16

Liberar portas, SELINUX

Ajustar SELinux (se estiver em modo enforcing - De qualquer forma, independente é recomendado fazer esta configuração)

Se o PostgreSQL estiver escutando em uma porta diferente da padrão, você precisa registrar essa porta.

Pelos meus testes, mesmo usando a porta padrão 5432, é recomendado fazer esta configuração

Usando FirewallD, pode ser usado o nome do serviço ou diretamente a porta para a liberação
No CentOS vem instalado por padrão, mas caso não esteja instalado, instale o pacote do FirewallD.

Se não for a intenção usar o FirewallD, Ignore esta sessão da matéria e finalizar por aqui.

sudo yum -y install firewalld firewalld-filesystem
sudo systemctl enable --now firewalld
systemctl status firewalld

Para liberar o PostgreSQL, pode usar tanto o serviço quanto diretamente a porta.

sudo firewall-cmd --zone=$(firewall-cmd --get-default-zone) --permanent --add-service=postgresql
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload 
sudo firewall-cmd --list-all