2012-02-25 14 views
9

próbuję przyznać przywileje tak:PostgreSQL 9.1 GRANT nie działa

zielony=# GRANT ALL PRIVILEGES ON DATABASE baza_tag to strona_user; 
GRANT 

Ale nic happends:

usename | usesysid | usecreatedb | usesuper | usecatupd | userepl | passwd | valuntil | useconfig 
-------------+----------+-------------+----------+-----------+---------+----------+----------+----------- 
postgres |  10 | t   | t  | t   | t  | ******** |   | 
zielony  | 16384 | t   | t  | t   | t  | ******** |   | 
strona_user | 16440 | f   | f  | f   | f  | ******** |   | 

Również nie mam żadnego dostępu za pośrednictwem PHP. Czego mi brakuje?

+0

System przywilejów PostgreSa nie przypomina bardzo systemu MySQL. Czego oczekujesz po tym oświadczeniu GRANT? Co próbujesz zrobić, ale się nie udaje? –

+1

Ulegam: [link] (http://wiki.gentoo.org/wiki/PostgreSQL). Spodziewałem się mieć uprawnienia do wybierania, usuwania, używania funkcji itd. Na wszystkich tabelach w bazie danych. Kiedy próbuję wybrać coś, co na mnie krzyczy: "Nie mam pozwolenia na zrobienie tego" – zie1ony

+0

Powinieneś. Ale dane wyjściowe nie pokazują uprawnień użytkownika dotyczących określonej istniejącej bazy danych, ale czy użytkownik może utworzyć nową bazę danych (na przykład). –

Odpowiedz

23

System praw PostgreSQL nie działa w ten sposób. Będziesz musiał ustawić prawa na samych obiektach. Tak jak poniżej:

GRANT ALL ON ALL TABLES IN SCHEMA public TO strona_user; 
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO strona_user; 
GRANT ALL ON ALL FUNCTIONS IN SCHEMA public TO strona_user; 
+0

Używam 8.4, a to nie działa. Flagi błąd na drugim "ALL". – Brad

+4

To jest rzeczywiście obsługiwane tylko w wersji 9.0 lub nowszej. Pierwotne pytanie dotyczyło 9.1. 8.4 Nie można tego zrobić. Można jednak napisać skrypt, który zapytuje tabele systemowe, aby zobaczyć, które tabele istnieją i uruchamia zapytanie dla każdego z nich. – Eelke

+0

Kiedy moje google-fu mnie zawiodło, ta odpowiedź zadziałała. dzięki! – engineerDave

Powiązane problemy