Thank you for reading this post, don't forget to subscribe!
Внимание!! Выполняем действия из под пользователя postgres и в нужной БД от которой будут запросы
Psql
\c test24_coins; ## конектимся к нужной БД от которой будут запросы
- CREATE EXTENSION dblink SCHEMA public; # Установите расширение DbLink
- Проверка дблинка:
SELECT pg_namespace.nspname, pg_proc.proname
FROM pg_proc, pg_namespace
WHERE pg_proc.pronamespace=pg_namespace.oid
AND pg_proc.proname LIKE '%dblink%'; - SELECT dblink_connect('host=100.230.144.11 user=devel password=пароль dbname=test24_tasks');
- CREATE FOREIGN DATA WRAPPER dbrnd VALIDATOR postgresql_fdw_validator;
CREATE SERVER test24_tasks_dblink FOREIGN DATA WRAPPER dbrnd OPTIONS (hostaddr '100.230.144.11', dbname 'test24_tasks');
CREATE USER MAPPING FOR devel SERVER test24_tasks_dblink OPTIONS (user 'devel', password 'пароль');
- Выдаем гранты
GRANT USAGE ON FOREIGN SERVER test24_tasks_dblink TO devel; - Проверяем уже из под пользователя devel и из базы test24_coins
psql -U devel -d test24_coins
SELECT dblink_connect('test24_tasks_dblink'); # тут должно быть ОК
И тестим селектами что права и линк есть:
SELECT * FROM public.dblink('test24_tasks_dblink','select user_id from public.users') AS DATA(user_id INTEGER);
Если необходим доступ еще до одной базы то создаем отдельный DBLink с новым названием (например test24_warehouse_dblink)