Vai trò của PostgreSQL so với người dùng, cấp quyền


27

Tôi hiện đang tìm hiểu sự khác biệt giữa PostgreSQL và MySQL khi tôi có một dự án mới và tôi cũng có ý định chuyển phần mềm hiện có của mình từ MySQL sang PostgreQuery. Tôi thực sự đã bắt đầu tạo một bảng HTML bằng cách so sánh các lệnh (đối với người dùng / cơ sở dữ liệu / dấu nhắc lệnh, v.v.) giữa hai bảng. Sau khi đọc câu trả lời ở đây, tôi nhận thấy rằng roledường như được sử dụng như một nhóm. Với MySQL Tôi có hai người, về cơ bản công cộng ( DELETE, INSERT, SELECTUPDATEcho phép) và một thành viên quản trị với một vài điều khoản bổ sung.

Vì vậy, về cơ bản trong dấu nhắc lệnh của Windows 7 (chỉ phát triển cục bộ) ...

  • Là một vai trò người dùng, nhóm hoặc một thuật ngữ được sử dụng lỏng lẻo cụ thể cho PostgreSQL?
  • Làm cách nào để tôi chỉ cấp quyền cụ thể cho một người dùng cụ thể cho tất cả các bảng trong cơ sở dữ liệu?
  • Làm cách nào để tôi cấp tất cả các quyền cho một người dùng cụ thể, cho tất cả các bảng trong cơ sở dữ liệu?
  • Làm thế nào, nếu tất cả, một vai trò so sánh với người dùng khi sử dụng GRANThoặc REVOKEcho phép người dùng?

Câu trả lời:


48

Một vai trò là một tổ chức có chức năng như một người sử dụng và / hoặc theo nhóm. Một vai trò WITH LOGINcó thể được sử dụng như một người dùng, tức là bạn có thể đăng nhập bằng nó. Bất kỳ vai trò nào cũng có thể hoạt động như một nhóm, bao gồm các vai trò mà bạn cũng có thể đăng nhập. Vì vậy, "người dùng" và "nhóm" về cơ bản là các thuật ngữ chỉ ra mục đích sử dụng của vai trò, không có sự phân biệt thực sự giữa chúng. Ngay cả trong hương vị PostgreSQL của SQL, cả hai được sử dụng ít nhiều dưới dạng từ đồng nghĩa. Ví dụ, tài liệu trên CREATE USERnói:

CREATE USER hiện là bí danh cho CREATE ROLE.

Cấp tất cả ... xem hướng dẫn choGRANT . Bạn có thể thực sự muốn cấp quyền cho ALL TABLES IN SCHEMA publichơn là tất cả các bảng trong cơ sở dữ liệu.

Cấp một số quyền ... điều tương tự, nhưng thay vì GRANT ALLsử dụng GRANT SELECT, INSERTchẳng hạn. Một lần nữa, xem hướng dẫn.

Vai trò người dùng và / hoặc nhóm. Bạn chỉ có thể cấp cho các vai trò, bởi vì vai trò là tất cả những gì có.


Giải thích tuyệt vời!
sharadov

Vậy ... cú pháp cấp tất cả các quyền cho tất cả các bảng trong lược đồ công khai là gì?
AlxVallejo

@AlxVallejo điều này sẽ giúp . Hãy thử liên kết trên cùng hoặc đọc GRANTtrang tài liệu nơi nó liệt kêALL TABLES IN SCHEMA
Craig Ringer
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.