Portál AbcLinuxu, 24. dubna 2024 11:05


Dotaz: PostgreSQL - uživatelé

3.10.2005 11:55 jirik2
PostgreSQL - uživatelé
Přečteno: 359×
Odpovědět | Admin
Zdravím,

nekamenujte mě, ale opravdu se nevyznám v oprávněních v PostgreSQL. Vytvořím-li uživatele, může vidět a pracovat ve všech databázích (potřebuji, aby daný uživatel měl přístup jen do své db). Zkoušel jsem při vytvoření databáze zadat ownera, další oprávnění jsem nepřidával. Co může být špatně? Za jakékoliv nakopnutí či i link na správnou stránku dokumentace Postgre budu vděčný.

Díky, J.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.10.2005 12:28 ailas
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Odpovědět | | Sbalit | Link | Blokovat | Admin
prihlas se jako super user databaze a GRANT/REVOKE [co] [kde] [komu]
pak lze take upravit soubor pg_hba co se tyce fyzickych uzivatelu.
v psql dej \h ... a pokracuj na http://www.postgresql.org/docs/7.4/interactive/index.html
ailas
3.10.2005 14:25 jirik2
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Díky za snahu. Pochopil jsem to správně tak, že když vytvořím uživatele, musím se poté postarat o to, abych mu odebral oprávnění k dalším databázím? Nemělo by to být naopak, tedy vytvořím uživatele a přidám mu práva k vybrané databázi? Omlouvám se, ale link na dokumentaci je až moc obecný, vím kde ji hledat, ale nevím co v ní hledat. Jen doplním: verze 8.0.3. Tak ještě jednou předem dík, J.
3.10.2005 15:34 Tom K | skóre: 21
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Ano je to naopak, tedy pokud nedelas uzivatele jako superusera. Pak ma samozrejme prava o neco lepsi.
echo -n "u48" | sha1sum | head -c3; echo
3.10.2005 16:27 jirik2
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Ok tedy prosím, jak to mám dělat? I když jsem po vytvoření uživatele žádná práva nestanovoval, má přístup ke všem databázím. Proč to? (samozřejmě nemluvím o uživateli root) Nikdo tento problém neřešil? J.
4.10.2005 10:54 Petr
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Teda nevím jak u vás, ale já mám doma databázi řekněme X a mám k ní tři účty. První (U1) je owner, může dělat DB a uživatele - je to tedy druhý uživatel postgres; pak mám uživatele U2 a U3, kteří nemají žádná tato práva. A když se uživateli U2 a U3 připojím do databáze, tak se sice připojím, ale nedám ani SELECT.

Mimochodem: uživatel root mi nějak nezapadá do schématu PostgreSQL...

Pak nezapomeňte, až vytvoříte (omezeného) uživatele U2 a budete chtít INSERTovat do TABLE1:

GRANT UPDATE ON sq_TABLE1_PKCOLUMN TO U2;

jinak Vám nebude fungovat "autoincrement".

Neví tu náhodou někdo, jak lze docílit, aby uživatel při insertu do tabulky _musel_ použít sequenci? Jde mi o to, že když nastavím DEFAULT(nextval()), tak to funguje, ale když napíšu rovnou

INSERT INTO TABLE1(PKCOLUMN) VALUES(1223); -- např.

tak to zákonitě projde, páč jsem neporušil UNIQUE a NOT NULL constraint (PRIMARY KEY), ale obešel jsem sequenci... Pak by mohl nastat případ, že sequence později vrátí číslo 1223, ale to už vložené bude, tudíž bude porušen UNIQUE index:-(((

Děkuji moc!
4.10.2005 11:37 ghostmonk
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
přes triggery
5.10.2005 11:55 Petr
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Díky, někde jsem o tom četl. Doufal jsem, že to půjde jednoduššeji;-)

Ještě jednou děkuji

PETR
4.10.2005 17:15 jirik2
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Nevím, v čem je problém s uživatelem root, při instalaci postgresql si přece můžete zvolit jméno superusera ... Jak se dělá autoincrement v postgre, tak k tomu jsem se ještě bohužel nemohl dostat :/
15.2.2006 05:51 Surgo
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Autoinkrementace je jako u Oracle zajistena pomoci sequence ... ovsem lepsi je pouzit datovy typ SERIAL, ktery to zajisti za Vas.
15.2.2006 10:23 barney
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
typ serial ma na svedomí nasledovné chovanie: vytvorí sa sequencia <meno_tabuľky>_<meno_stĺpca>_seq
daný sĺpec sa vytvorí ako typ int4 s default hodnotou nextval('<meno vytvorenej sekvencie>')

existuje i typ bigserial, ten vytvara typ int8

15.2.2006 08:35 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Neví tu náhodou někdo, jak lze docílit, aby uživatel při insertu do tabulky _musel_ použít sequenci?
Použít pravidla (rules) a view – pravidlo nelze použít rovnou na tabulku, protože by se rekurzivně volalo pořád dokola.
CREATE RULE vnutit_sequenci AS ON INSERT TO view_for_table
    DO INSTEAD INSERT INTO table VALUES (
                                    NEW.value1,
                                    NEW.value2,
                                    nextval()
                                );
3.10.2005 14:27 jirik2
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Ještě doplním, že v pg_hba nemám nikde trust, pouze password nebo md5 ...
3.10.2005 21:52 JFK
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
No nevim, s tim jsem se nesetkal, kdyz se vytvari uzivatel, tak ma implicitne nastaveny ze nemuze nic. Zkus to delat takhle: CREATE USER uzivatel NOCREATEUSER NOCREATEDB;
4.10.2005 00:58 jirik2
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Tak bohužel, vytvořil jsem tímto způsobem uživatele, ale ten opět vidí již stávající databáze, může v nich vytvářet tabulky atd. :/
4.10.2005 06:01 ghostmonk
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
kdo kam může se nastavuje v pg_hba.conf
4.10.2005 17:22 jirik2
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Ok. Mám mj. uživatele "tester", databázi "testovacidb". V pg_hba.conf následující:
host	testovacidb	tester	0.0.0.0/0	md5
Toto má za následek: 1) pomocí PHP se s userem tester připojím pouze k db testovacidb 2) pomocí phppgadmina se s userem tester nepřihlásím vůbec 3) pomocí PHP a usera tester se mi podaří vypsat seznam uživatelů na daném postgresql serveru - velmi špatné

Omlouvám se, připadám si už jako pako, ale nedokážu s tím hnout :/ S editací pg_hba.conf s každým vytvořeným uživatelem bych se smířil, ale jen pokud by to fungovalo.

J.
4.10.2005 20:32 ghostmonk
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
add 3) revoke all on table pg_user from public;
4.10.2005 23:21 jirik2
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Díky, to vypadá, že vyřešilo problém, ještě to budu muset víc oťuknout. Díky. V pg_hba.conf mám nastaven přístup uživatele tester k databázi testovacidb, ale zřejmě mu teď ještě musím pomocí GRANT nějaká práva přidat. Zkouším "GRANT ALL PRIVILEGES ON testovacidb TO tester", ale vrací mi to tuhle chybu: "Query failed: ERROR: relation "testovacidb" does not exist" :/
4.10.2005 13:18 Cronin
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skus forum na http://www.dbsvet.cz.
15.2.2006 08:06 Pavel Stěhule
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
Odpovědět | | Sbalit | Link | Blokovat | Admin
PostgreSQL nastavuje uživatele na db. cluster, ne na databázi. Tím pádem má uživatel přístup do všech databází. Má přístup k seznamu tabulek i k seznamu uživatelů a dalším sys. informacím. Nemusí se to někomu líbit, ale je to tak. Můžete fyzicky omezit přístup pro uživatele s pg_hba.conf, nicméně jakmile se tam kdokoliv přihlásí, tak opět uvidí všechny sys. informace. Práva jsou naopak defaultně minimalizována pro namespaces, tablespaces a tabulky. Pokud uživateli nenastavíte přístup tak vidí data pouze svých vlastních tabulek,

Existoval patch, který omezoval viditelnost, ale netuším v jakém stavu je teď a kde je.

Pavel
15.2.2006 10:04 Dracula
Rozbalit Rozbalit vše Re: PostgreSQL - uživatelé
to ze nejsou videt data v tabulkach je bezva ale ze cizi clovik muze koukat na zdrojaky funkci se mi zda snad jeste horsi, to tam budu muset prestat davat hesla:DDD

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.