Cấp quyền truy cập vào tất cả các bảng của cơ sở dữ liệu


13

Gần đây tôi muốn chia sẻ quyền truy cập thường xuyên với một người dùng máy chủ và tôi nhận ra rằng một lệnh đơn giản CREATE USERGRANT ALL ON DATABASEkhông cho phép anh ta chạy đơn giản SELECTtrên dữ liệu.

Tôi muốn cấp quyền cho tất cả các bảng từ một cơ sở dữ liệu nhất định cho một người dùng được chỉ định, nhưng tôi không chắc liệu đó có phải là ý tưởng tốt nhất để cấp cho anh ta quyền truy cập vào toàn bộ lược đồ hay không publicvì tôi không biết liệu nó có cho phép một loại đặc quyền nào đó không leo thang. Còn cách nào khác không?


Tại sao bạn không thể GRANT SELECT ON TableName TO [Domain\User]? Tôi thường chỉ gán người dùng cho db_datareadervai trò nếu tất cả những gì họ cần là đọc quyền truy cập vào tất cả các bảng nhưng tôi không chắc bạn muốn chi tiết đến mức nào.
Kris Gruttemeyer

Tôi muốn cấp tất cả CRUD cho tất cả các bảng trong cơ sở dữ liệu. Ngoài ra, DROPping và CREATEing bên trong cơ sở dữ liệu này cũng có thể hữu ích.
d33tah 14/2/2015

Câu trả lời:


19

Đặc quyền trên DATABASEchỉ cấp quyền kết nối chung cho cơ sở dữ liệu và không còn nữa. Một người dùng chỉ có đặc quyền đó chỉ có thể thấy những gì công chúng được phép nhìn thấy.

Để cấp quyền truy cập đọc vào tất cả các bảng , bạn cũng cần có các đặc quyền trên tất cả các lược đồ và bảng:

GRANT USAGE ON SCHEMA public TO myuser; -- more schemas?
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

Bạn cũng có thể muốn đặt các đặc quyền mặc định cho các lược đồ và bảng trong tương lai . Chạy cho mọi vai trò tạo đối tượng trong db của bạn

ALTER DEFAULT PRIVILEGES FOR ROLE mycreating_user IN SCHEMA public
GRANT SELECT ON TABLES TO myuser;

Nhưng bạn thực sự cần phải hiểu toàn bộ khái niệm đầu tiên.
Và hầu như luôn luôn tốt hơn để gói các đặc quyền trong vai trò nhóm và sau đó cấp / thu hồi vai trò nhóm đến / từ vai trò người dùng. Liên quan:


myusrmột lỗi đánh máy? Có nên không myuser?
attomos

1
@attomos: Ví dụ: phải là một người dùng khác. Tôi nói rõ.
Erwin Brandstetter
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.