Para executarmos isso, conecte no banco, com o usuário postgres. Em seguida, vamos verificar qual o método de criptografia estamos usando, para isso execute o comando:

SHOW password_encryption;

Verifique se a criptografia está scram-sha-256. Caso não esteja altere com o seguinte comando:

SET password_encryption  = 'scram-sha-256';

Verifique se agora está correto. Estando correto, use o comando abaixo para criar o usuário, alterando a parte em cinza para a senha da conta (obtenha esta senha com a equipe de TI de sua empresa):

create user "svc_dblink" with password 'password' superuser createrole createdb;

Agora, ainda no PostgreSQL, execute o seguinte comando:

SELECT * from pg_authid where rolname = 'svc_dblink';

Verifique se foi criado o usuário e se (na coluna de senha) está usando criptografia SCRAM-SAH-256

Agora, vamos alterar o método de conexão para quando receber uma solicitação de conexão do do outro servidor PostgreSQL (que irá criar o bdlink) a autenticação seja com esse usuário local que criamos, para isso execute:

vim /var/lib/pgsql/data/pg_hba.conf

Pressione a tecla INSERT do teclado, para entrar em modo de edição. Localize a primeira linha não comentada (sem começar com #) que começa com host. Acima dessa linha, crie a seguinte linha (alterando a parte em cinza pelo endereço IP do servidor que irá se conectar a este):

host all svc_dblink     IP/32                           scram-sha-256

Observações:

  • Se o método de criptografia do servidor estiver md5 ou se o usuário que será usado (nesse caso, o svc_dblink) já estava criado e a criptografia de senha dele estava em md5, coloque no pg_hba md5 (em vez de scram-sha-256);
  • Se quiser deixar autorizado para conexão de qualquer ambiente (não apenas um remoto, mas por exemplo o mesmo servidor poder executar uma rotina com esse usuário), coloque no pg_hba all (em vez de IP/32);

Após a edição, pressione a tecla ESC para sair do modo de edição, em seguida digite :wq! e pressione ENTER para salvar e sair. Em seguida, reinicie o PostgreSQL com o seguinte comando:

systemctl stop postgresql.service
systemctl start postgresql.service

Configuração no servidor DBLINK (que irá criar uma conexão DBLINK)

Antes de mais nada, vamos testar a conexão desse servidor ao servidor que criamos o usuário, para isso execute (altere as partes em cinza, conforme sua realidade):

psql -h nome_do_servidor -U svc_dblink -d nome_da_database

Será solicitado a senha, informe a senha dessa conta e verifique se conectou corretamente. Estando tudo correto, saia dessa conexão executando o seguinte comando:

\q

Agora conecte no banco com o usuário postgres. E crie a conexão DBLINK (o padrão do nome de conexão será a soma das variáveis de servidor e base, ficando fdw_servidor_base) com os seguintes comandos (altere as partes em cinza, conforme sua realidade):

CREATE EXTENSION dblink;
  • Para listar as extensões habilitadas, execute o comando:
\dx

Em seguida, execute:

CREATE SERVER fdw_nomeservidororigem_nomedatabase FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'nome_do_servidor', dbname 'nome_de_uma_database', port '5432');
  • Para listar as conexões existentes, execute o comando:
\des+

Em seguida, execute:

CREATE USER MAPPING FOR analistas SERVER fdw_nomeservidororigem_nomedatabase OPTIONS (user 'svc_dblink',password 'password');
  • Para listar os user mapping’s, execute o comando:
\deu+

Em seguida, execute:

GRANT USAGE ON FOREIGN SERVER fdw_nomeservidororigem_nomedatabase TO <source_user>;

Para testar o DBLINK, execute:

Fontes/Referências

NVLAN – Instalação do PostgreSQL no CentOS 9

Mais Informações

Esperamos ter te ajudado e estaremos sempre a disposição para mais informações.

Se você tem interesse em algum assunto específico, tem alguma dúvida, precisa de ajuda, ou quer sugerir um post, entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria