Bạn hoàn toàn không phải làm bất cứ điều gì về nó.
Các bảng (và dữ liệu được lưu trữ bên trong) thuộc sở hữu của người dùng A. Không ai có thể xem bảng đó trừ khi người dùng A cấp một số đặc quyền cho người dùng khác, chẳng hạn như người dùng B.
Điều đó có thể được thực hiện bằng cách cấp một số đặc quyền, tức là
grant select on my_table to user_B;
và người dùng B sau đó sẽ tìm nạp dữ liệu dưới dạng
select * from user_A.my_table;
Người dùng B sẽ không thể sửa đổi dữ liệu (vì nó không được cấp chèn / cập nhật / xóa).
Hơn nữa, bạn (với tư cách là người dùng A) có thể tạo chế độ xem chỉ chọn một phần dữ liệu, ví dụ:
create view v_my_table as
select *
from my_table
where score > 4;
grant select on v_my_table to user_B;
Làm như vậy, người dùng B sẽ chỉ thấy các hàng có điểm lớn hơn 4.
Nếu có người dùng C, nó hoàn toàn không thể nhìn thấy bất cứ điều gì. Nếu bạn muốn nó xem một số dữ liệu, bạn sẽ làm những gì bạn đã làm với người dùng B - cấp các đặc quyền nhất định.
Tuy nhiên, có một tùy chọn để cho phép người dùng B "chuyển tiếp" các đặc quyền cho người dùng khác - bạn sẽ sử dụng with grant option
, ví dụ:
grant select on my_table to user_B with grant option;
Điều đó sẽ cho phép người dùng B cấp quyền chọn cho những người dùng khác, ví dụ:
grant select on user_A.my_table to user_C;
Cuối cùng (nói về câu trả lời này), nếu có nhiều người dùng mà bạn muốn cấp các đặc quyền đó, bạn có thể tạo vai trò . Sau đó, bạn sẽ cấp đặc quyền cho một vai trò và cấp vai trò cho (những) người dùng khác. Nó cho phép bạn sửa đổi các vai trò tùy thuộc vào mong muốn của bạn (và của những người dùng khác).
create role my_role;
grant select on my_table to my_role;
Ví dụ, để bắt đầu, bạn có thể cấp cho select
tới my_role
, rồi cấp my_role
cho người dùng B, C và D.
grant my_role to user_B;
grant my_role to user_C;
Sau đó, bạn có thể cấp insert
tới my_role
grant insert on my_table to my_role;
và tất cả người dùng được cấp my_role
sẽ tự động có thể chèn các hàng vào my_table của người dùng A.