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.