Ahoj,
mám takový problémek s dblinkem v kontejnery.
Na "normální" instalaci PostgreSQL tohle funguje
GRANT USAGE ON FOREIGN DATA WRAPPER dblink_fdw TO user1;
CREATE SERVER lokalni_vazba
FOREIGN DATA WRAPPER dblink_fdw
OPTIONS (host '127.0.0.1', dbname 'moje_nova_db', port '5435');
CREATE USER MAPPING FOR user1
SERVER lokalni_vazba
OPTIONS (user 'user1', password 'user1');
GRANT USAGE ON FOREIGN SERVER lokalni_vazba TO user1;
pod user1
SELECT dblink_connect('moje_session', 'lokalni_vazba');
SELECT dblink_exec('moje_session', 'CALL moje_aplikace.zapis_log(''Test123456789'')');
SELECT dblink_disconnect('moje_session');
ale v kontejneru ne. Zkoušel jsem všechno možné od konfigurace pg_hba.conf, přes různé názvy hostu. Vždy se objevila chyba :
ERROR: password or GSSAPI delegated credentials required
Non-superusers may only connect using credentials they provide, eg: password in connection string or delegated GSSAPI credentials
Pro pgadmina vše fungovalo, ale to je pro mně nežádoucí stav.
Jediné co mi procházelo bylo :
GRANT EXECUTE ON FUNCTION dblink_connect_u(text, text) TO user1;
a pro user1 :
SELECT dblink_connect_u('moje_session','host=127.0.0.1 dbname=moje_nova_db user=user1 password=user1');
SELECT dblink_exec('moje_session', 'CALL moje_aplikace.zapis_log(''Test123456789'')');
SELECT dblink_disconnect('moje_session');
Jenomže je tam password, což je nežádoucí.
Nemáte někdo nějaký nápad co s tím ?
Raději bych se obešel bez dalších extenzí, ale když budou tak což.
Michal