Ich versuche, Berechtigungen in meiner Datenbank für Benutzer festzulegen, damit diese nur UPDATE, INSERT, DELETE und natürlich SELECT für geografische Tabellen ausführen können.
Da ich einige SERIAL-Typen für meine IDs verwende, möchte ich den Benutzern nicht einmal die Möglichkeit geben, dieses Feld manuell zu bearbeiten. Also definiere ich spaltenweise Privilegien. Es funktioniert im UPDATE-Teil einwandfrei, aber die Schaltfläche in QGIS, mit der ein neues Objekt erstellt werden kann, bleibt ausgegraut. Der einzige Weg, auf dem es zu funktionieren scheint, ist, wenn ich in der Berechtigungsdefinition kein Feld spezifiziere. Selbst wenn ich alle Felder auswähle, funktioniert dies nicht (obwohl ich gedacht hätte, dass die Angabe keiner Spalte und die Angabe aller Felder gleich wäre).
Es scheint etwas zu sein, das ich nicht verstehe, oder es gibt eine Einschränkung in der Berechtigungsdefinition für die ordnungsgemäße Interaktion zwischen der Datenbank und QGIS. Hat jemand Informationen oder Ratschläge, die mir helfen könnten, das Geschehen zu verstehen und / oder (noch besser) mir zu helfen, mein Ziel zu erreichen?
Ich kann immer damit umgehen, indem ich das Feld in der Stildefinition als nicht bearbeitbar einstelle, aber da jeder es so einstellen kann, wie er möchte, würde ich eine sicherere Alternative bevorzugen.
Ausführen von QGIS 2.14, PostGIS 2.3 für PostgreSQL 9.5.
GRANT INSERT (col2, col3, col4) ON table TO users
Antworten:
Der Benutzer, der über INSERT-Rechte verfügen soll, muss über vollständige Rechte für die Primärschlüsselspalte verfügen. Andernfalls kann sie die Einfügung nicht durchführen. Ich glaube, daran führt kein Weg vorbei. Sie können die Sichtbarkeit dieser Spalte in QGIS nur einschränken, wie Sie bereits erwähnt haben.
Zu Ihrem Kommentar:
column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary key
Ich bin mir nicht sicher, ob das funktionieren würde. Beim Einfügen einer neuen Zeile muss natürlich ein neuer Primärschlüssel erstellt werden. Sie wollen das nicht umgehen.quelle