Problém container dblink

20 views
Skip to first unread message

Michal Šalko

unread,
Apr 7, 2026, 11:53:02 PM (10 days ago) Apr 7
to PostgreSQL-cz
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

 

Pavel Stehule

unread,
Apr 8, 2026, 12:19:40 AM (10 days ago) Apr 8
to postgr...@googlegroups.com
Ahoj

st 8. 4. 2026 v 5:53 odesílatel Michal Šalko <salko....@gmail.com> napsal:
tohle je chybova hlaska dblinku

/*
 * For non-superusers, insist that the connstr specify a password, except if
 * GSSAPI credentials have been delegated (and we check that they are used for
 * the connection in dblink_security_check later) or if SCRAM pass-through is
 * being used.  This prevents a password or GSSAPI credentials from being
 * picked up from .pgpass, a service file, the environment, etc.  We don't want
 * the postgres user's passwords or Kerberos credentials to be accessible to
 * non-superusers. In case of SCRAM pass-through insist that the connstr
 * has the required SCRAM pass-through options.
 */
static void
dblink_connstr_check(const char *connstr)
{
    if (superuser())
        return;

    if (dblink_connstr_has_pw(connstr))
        return;

    if (MyProcPort != NULL && MyProcPort->has_scram_keys && dblink_connstr_has_required_scram_options(connstr))
        return;

#ifdef ENABLE_GSS
    if (be_gssapi_get_delegation(MyProcPort))
        return;
#endif

    ereport(ERROR,
            (errcode(ERRCODE_S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED),
             errmsg("password or GSSAPI delegated credentials required"),
             errdetail("Non-superusers must provide a password in the connection string or send delegated GSSAPI credentials.")));
}

tak zkusit odkrokovat, co muze byt jinak. V tom kontejneru muze byt mozna jina verze postgresu bez podpory GSS

Co se tyka alternativnich reseni - jestli tomu rozumim, je to pokus o autonomni transakci

Dost caste reseni je https://github.com/vibhorkum/pg_background - pokud nedojde k pretizeni tak by to melo fungovat

Minuly tyden jsem si hral s netransakcnim storage https://okbob.blogspot.com/2026/04/using-non-acid-storage-as-workaround.html - je to trochu neortodoxni reseni, ale tak jednoduche, ze by to melo fungovat - tabulky nejsou logovane - nebude fungovat replikace ani wal based backup
 

Michal

 

--
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „PostgreSQL-cz“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete e-mail na adresu postgresql-c...@googlegroups.com.
Tuto diskuzi najdete na adrese https://groups.google.com/d/msgid/postgresql-cz/cdce562a-9071-4511-b96f-24ae08f93621n%40googlegroups.com.

Michal Šalko

unread,
Apr 8, 2026, 11:45:26 PM (9 days ago) Apr 8
to PostgreSQL-cz
Díky. Zkusím použít pg_background.

Dne středa 8. dubna 2026 v 6:19:40 UTC+2 uživatel pavel....@gmail.com napsal:

Pavel Stehule

unread,
Apr 9, 2026, 1:19:35 AM (9 days ago) Apr 9
to postgr...@googlegroups.com


čt 9. 4. 2026 v 5:45 odesílatel Michal Šalko <salko....@gmail.com> napsal:
Díky. Zkusím použít pg_background.

tak pak dejte vědět, jak vám to funguje. To může zajímat víc lidí.

Pavel
 
Reply all
Reply to author
Forward
0 new messages