PostGIS / QGISでのINSERTの特権


12

データベースの特権をユーザーに設定して、ユーザーが地理テーブルでUPDATE、INSERT、DELETE、そしてもちろんSELECTのみできるようにしています。

私はIDにいくつかのSERIALタイプを使用しているため、このフィールドを手動で編集する可能性をユーザーに与えないことを希望します。そこで、列ごとの特権を定義しています。UPDATEパーツでは正常に機能しますが、QGISの新しいオブジェクトの作成を許可するボタンはグレーのままです。動作しているように見える唯一の方法は、特権定義でフィールドを指定しない場合です。すべてのフィールドを選択しても機能しません(列を指定せず、すべてを指定することは同じだと思っていたとしても)。

それは私が理解していないもののようです、またはDBとQGISの間の適切な相互作用のための特権の定義には制限があります。何が起こっているのかを理解するのに役立つ情報やアドバイスがありますか?

スタイル定義でフィールドを編集不可として設定することでいつでも対処できますが、誰でも好きなように設定できるため、より安全な代替手段を好むでしょう。

PostgreSQL 9.5用のQGIS 2.14、PostGIS 2.3の実行。


GRANT SQLコマンドを使用してユーザー権限(特権)を設定していますか?テーブルに挿入を許可しましたか?
ゾルタン

はい@Zoltan、私のクエリは次のようになりますGRANT INSERT (col2, col3, col4) ON table TO users
GuiOmクレア

5
INSERT権限が必要なユーザーは、主キー列に対する完全な権限を持っている必要があります。そうしないと、彼女は挿入を実行できません。それを回避する方法はないと思います。既に述べたように、QGISでその列の可視性のみを制限できます。
ミカ

1
@Micha OK、それは確かにそのようなことを言っています...主キーの列固有のトリガーON INSERT DO NOTHINGとON UPDATE DO NOTHINGによる別の回避策もあると思います主キー。ありがとう。
GuiOmクレア

3
または、SERIAL列を除くテーブルのビューを作成し、そのビューへのアクセスのみを許可します。
-JoeBe

回答:


0

INSERT権限が必要なユーザーは、主キー列に対する完全な権限を持っている必要があります。そうしないと、彼女は挿入を実行できません。それを回避する方法はないと思います。既に述べたように、QGISでその列の可視性のみを制限できます。

あなたのコメントに関して:column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary keyそれがうまくいくかどうかわかりません。明らかに、新しい行を挿入するときは、新しい主キーを作成する必要あります。あなたはそれを回避したくありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.