Estou executando o Postgresql 17 em um servidor RHEL 8.8 e quero conectar de um servidor de terminal remoto usando um cliente de banco de dados como o BeaverDB. No entanto, não consigo conectar (continuo recebendo uma "Conexão recusada: conectar" do cliente) e parece que isso ocorre porque não consigo fazer o servidor de banco de dados escutar endereços externos, conforme descrito na documentação do Postgresql:
Inicio o psql e determino o arquivo de configuração relevante usando o seguinte comando:
select * from pg_settings where name = 'config_file';
Eu edito a linha relevante no arquivo de configuração de
listen_addresses = 'localhost'
paralisten_addresses = '*'
e eu salvo e fecho o arquivo.
Eu reinicio o sistema de banco de dados usando
sudo systemctl restart postgresql-17
mas também tentei reiniciar a máquina inteira.
Quando eu uso o psql novamente e digito
select * from pg_settings where name = 'listen_addresses';
ainda diz localhost
.
Sei que há vários outros tópicos com perguntas muito semelhantes, mas nenhum contém uma solução. O que estou fazendo errado aqui?
Ok, eu meio que resolvi o problema.
Por algum motivo, o arquivo de configuração é ignorado. No entanto, você pode definir o parâmetro usando o programa 'postgres' e nem precisará reiniciar o serviço ou a máquina inteira.
sudo systemctl stop postgresql-17
/usr/pgsql-17/bin/postgres -D /var/lib/pgsql/17/data
a linha de comando bash (desde que a estrutura da sua pasta corresponda à minha; o primeiro caminho é o caminho para o executável "postgres" e o último é o caminho para o diretório do seu banco de dados onde o arquivo de configuração está localizado)./usr/pgsql-17/bin/postgres -c listen_addresses='*'
a partir de uma linha de comando. Isso mudará o parâmetro em tempo de execução. Para mim, a conexão remota foi desbloqueada instantaneamente.Se alterar
listen_addresses
epostgresql.conf
reiniciar o servidor não alterar a configuração, mas definir o parâmetro na linha de comando ao iniciar o servidor resolver, o parâmetro deve ser definido em um nível que substitua,postgresql.conf
mas seja substituído pelos parâmetros da linha de comando.Isso deixa apenas uma conclusão: o parâmetro deve ter sido definido usando
ALTER SYSTEM
. Para corrigir o problema é uma maneira persistente, executee reinicie o PostgreSQL.
Há algumas coisas a verificar sobre esse problema.
Uma delas é confirmar se o PostgreSQL está usando o arquivo de configuração correto do sistema operacional:
Além disso, há algo nos arquivos de log? Você também pode executar este comando:
Por fim, o SELinux está habilitado?
Isso pode evitar alterações no arquivo.