Nemusíte pro to dělat absolutně nic.
Tabulky (a data v nich uložená) vlastní uživatel A. Nikdo je nevidí pokud uživatel A uděluje určitá oprávnění jiným uživatelům, například uživateli B.
Toho lze dosáhnout udělením výběrového oprávnění, tj.
grant select on my_table to user_B;
a uživatel B by pak načetl data jako
select * from user_A.my_table;
Uživatel B nebude moci upravovat data (protože mu nebylo povoleno vložení/aktualizace/smazání).
Kromě toho můžete (jako uživatel A) vytvořit pohled který vybere pouze část dat, např.
create view v_my_table as
select *
from my_table
where score > 4;
grant select on v_my_table to user_B;
Pokud tak učiníte, uživatel B uvidí pouze řádky, jejichž skóre je vyšší než 4.
Pokud je tam uživatel C, nevidí absolutně nic. Pokud byste chtěli, aby viděl nějaká data, udělali byste to, co jste již udělali s uživatelem B – udělili určitá oprávnění.
Existuje však možnost nechat uživatele B „předat“ oprávnění dalším uživatelům – použili byste with grant option
, např.
grant select on my_table to user_B with grant option;
To by uživateli B umožnilo udělit výběr jiným uživatelům, např.
grant select on user_A.my_table to user_C;
Nakonec (mluvíme o této odpovědi), pokud existuje mnoho uživatelů, kterým byste chtěli udělit taková oprávnění, můžete vytvořit role . Pak byste udělili oprávnění roli a udělili roli dalším uživatelům. Umožňuje vám upravovat role v závislosti na přání vašich (a ostatních uživatelů).
create role my_role;
grant select on my_table to my_role;
Pro začátek můžete například udělit select
na my_role
a poté udělte my_role
uživatelům B, C a D.
grant my_role to user_B;
grant my_role to user_C;
Později můžete udělit insert
na my_role
grant insert on my_table to my_role;
a všem uživatelům byla udělena my_role
bude automaticky schopen vkládat řádky do my_table uživatele A.