Câu trả lời:
Bạn đúng rằng không có cách nào để cấp quyền cho người dùng tạo / thả / etc trên toàn bộ lược đồ. Tôi đề nghị bạn xem xét xác thực proxy . Điều này về cơ bản liên quan đến việc thay đổi người dùng A để cho phép người dùng B ủy quyền dưới dạng A:
ALTER USER A GRANT CONNECT THROUGH B;
Sau đó, kết nối sử dụng xác thực của người dùng B, nhưng được sự cho phép của người dùng A.
connect B[A]/Password@Database
Câu hỏi này phần nào được bao phủ bởi câu hỏi cụ thể hơn của tôi ở đây .
Lưu ý về Vai trò: Vai trò hoạt động tốt khi cung cấp Đặc quyền đối tượng cho người dùng khác vì các đặc quyền được gắn với một đối tượng cụ thể. Mặc dù Vai trò có thể cấp Đặc quyền hệ thống , nhưng chúng áp dụng cho lược đồ riêng của người dùng hoặc cho toàn bộ cơ sở dữ liệu và do đó không thể áp dụng cho lược đồ khác. Ví dụ, người dùng B có thể được cấp CREATE TABLE
cho phép nó tạo các bảng trong lược đồ riêng của mình hoặc CREATE ANY TABLE
cho phép nó tạo các bảng trong bất kỳ lược đồ nào. Các quyền này có thể được cấp trực tiếp hoặc thông qua vai trò, nhưng trước đây sẽ không cho phép tạo đặc quyền trong lược đồ A. Cái sau sẽ, nhưng cũng sẽ cho phép tạo các đặc quyền trong bất kỳ lược đồ nào, kể cả sys, đây sẽ là một vấn đề bảo mật.
Bạn chỉ có thể tạo một vai trò với các quyền đó và cấp vai trò cho bất cứ ai cần khả năng đó.
CREATE TABLE
cho phép nó tạo các bảng trong lược đồ riêng của mình hoặc CREATE ANY TABLE
cho phép nó tạo các bảng trong bất kỳ lược đồ nào. Các quyền này có thể được cấp trực tiếp hoặc thông qua vai trò, nhưng quyền thứ nhất quá hẹp và thứ hai quá rộng.