Próbuję ustawić uprawnienia w mojej bazie danych dla użytkowników, aby mogli aktualizować, WSTAWIAĆ, USUWAĆ i oczywiście WYBIERAĆ w tabelach geograficznych.
Ponieważ używam niektórych typów SERIAL dla moich identyfikatorów, wolałbym nawet nie dawać użytkownikom możliwości ręcznej edycji tego pola. Definiuję więc uprawnienia kolumnowe. Działa dobrze w części UPDATE, ale przycisk w QGIS pozwalający na utworzenie nowego obiektu pozostaje wyszarzony. Jedynym sposobem, w jaki wydaje się działać, jest to, że nie określam żadnego pola w definicji uprawnień. Nawet gdy wybiorę wszystkie pola, to nie działa (nawet gdybym pomyślał, że nieokreślenie żadnej kolumny i podanie wszystkich z nich byłoby takie samo).
Wydaje się, że jest to coś, czego nie rozumiem, lub w definicji przywileju istnieje ograniczenie dla właściwej interakcji między DB a QGIS. Czy ktoś ma jakieś informacje lub porady, które mogłyby pomóc mi zrozumieć, co się dzieje i / lub (jeszcze lepiej) pomóc mi osiągnąć mój cel?
Zawsze mogę sobie z tym poradzić, ustawiając pole jako nieedytowalne w definicji stylu, ale ponieważ każdy może ustawić to, co chce, wolałbym bezpieczniejszą alternatywę.
Uruchamianie QGIS 2.14, PostGIS 2.3 dla PostgreSQL 9.5.
GRANT INSERT (col2, col3, col4) ON table TO users
Odpowiedzi:
Użytkownik, który powinien mieć uprawnienia INSERT, musi mieć pełne uprawnienia do kolumny klucza podstawowego. W przeciwnym razie nie będzie mogła wykonać wstawki. Nie sądzę, żeby było na to jakikolwiek sposób. Jak już wspomniałeś, możesz ograniczyć widoczność tej kolumny w QGIS.
Jeśli chodzi o twój komentarz:
column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary key
nie jestem pewien, czy to zadziała. Po włożeniu nowego wiersza, nowy klucz podstawowy musi zostać utworzony, oczywiście. Nie chcesz tego obchodzić.źródło