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
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
Para mais informações acesse o site oficial, PostgreSQL, Download, família Red Hat
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
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
sudo dnf -qy module disable postgresql
sudo dnf module list --disabled
sudo dnf -y updateinfo
sudo dnf install -y postgresql16-server
Verificar se a versão desejada foi instalado corretamente
psql --version
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16
sudo systemctl status postgresql-16
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
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
*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
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
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
sudo semanage port -a -t postgresql_port_t -p tcp 5433
sudo semanage port -a -t postgresql_port_t -p tcp 5432
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