Đặc quyền trên INSERT trong PostGIS / QGIS


12

Tôi đang cố gắng thiết lập các đặc quyền trong cơ sở dữ liệu của mình cho người dùng để họ chỉ có thể CẬP NHẬT, CHERTN, XÓA và dĩ nhiên, CHỌN trên các bảng địa lý.

Vì tôi đang sử dụng một số loại SERIAL cho ID của mình, tôi thậm chí không muốn cung cấp cho người dùng khả năng chỉnh sửa trường này theo cách thủ công. Vì vậy, tôi đang xác định đặc quyền cột khôn ngoan. Nó hoạt động tốt trên phần CẬP NHẬT, nhưng nút trong QGIS cho phép tạo một đối tượng mới vẫn có màu xám. Cách duy nhất có vẻ như nó hoạt động là khi tôi không chỉ định bất kỳ trường nào trong định nghĩa đặc quyền. Ngay cả khi tôi chọn tất cả các trường, nó không hoạt động (mặc dù tôi đã nghĩ rằng không chỉ định bất kỳ cột nào và chỉ định tất cả các trường sẽ giống nhau).

Nó dường như là một cái gì đó mà tôi không hiểu, hoặc có một hạn chế trong định nghĩa đặc quyền cho sự tương tác đúng đắn giữa DB và QGIS. Có ai có bất kỳ thông tin hoặc lời khuyên nào có thể giúp tôi hiểu những gì đang xảy ra không, và / hoặc (thậm chí tốt hơn) giúp tôi đạt được mục tiêu của mình?

Tôi luôn có thể giải quyết vấn đề đó bằng cách đặt trường là không thể chỉnh sửa trong định nghĩa kiểu, nhưng vì bất kỳ ai cũng có thể đặt nó theo ý muốn, tôi muốn một giải pháp thay thế an toàn hơn.

Chạy QGIS 2.14, PostGIS 2.3 cho PostgreSQL 9.5.


Bạn có sử dụng lệnh GRANT SQL để đặt quyền người dùng (đặc quyền) không? Bạn đã GRANT INSERT trên bàn của bạn?
Zoltan

@Zoltan Có, truy vấn của tôi trông giống nhưGRANT INSERT (col2, col3, col4) ON table TO users
GuiOm Clair

5
Người dùng cần có quyền INSERT phải có toàn quyền đối với cột khóa chính. Nếu không, cô sẽ không thể chèn. Tôi không nghĩ có cách nào khác. Bạn chỉ có thể giới hạn mức độ hiển thị của cột đó trong QGIS, như bạn đã đề cập.
Micha

1
@Micha Được rồi, thực sự nó hoàn toàn có ý nghĩa như vậy ... Tôi đoán tôi cũng có một cách giải quyết khác bởi một trình kích hoạt cụ thể theo cột TRÊN CHỨNG KHÔNG NÊN và CẬP NHẬT KHÔNG NÊN cho khóa chính, điều này sẽ ngăn mọi chỉnh sửa thủ công khóa chính. Cảm ơn.
GuiOm Clair

3
Hoặc bạn tạo chế độ xem bảng của mình ngoại trừ cột SERIAL và chỉ cấp quyền truy cập vào chế độ xem đó.
JoeBe

Câu trả lời:


0

Người dùng cần có quyền INSERT phải có toàn quyền đối với cột khóa chính. Nếu không, cô sẽ không thể thực hiện chèn. Tôi không nghĩ có cách nào khác. Bạn chỉ có thể giới hạn mức độ hiển thị của cột đó trong QGIS, như bạn đã đề cập.

Về nhận xét của bạn: column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary keyTôi không chắc điều đó sẽ hiệu quả. Khi chèn một hàng mới , rõ ràng phải tạo một khóa chính mới . Bạn không muốn phá vỡ điều đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.