U hoeft er niets aan te doen.
Tabellen (en gegevens die erin zijn opgeslagen) zijn eigendom van gebruiker A. Niemand kan het zien tenzij gebruiker A kent bepaalde rechten toe aan andere gebruikers, zoals gebruiker B.
Dat kan worden gedaan door select privilege toe te kennen, d.w.z.
grant select on my_table to user_B;
en gebruiker B zou dan gegevens ophalen als
select * from user_A.my_table;
Gebruiker B kan geen gegevens wijzigen (omdat er geen toestemming is gegeven voor invoegen/bijwerken/verwijderen).
Verder kunt u (als gebruiker A) een weergave . maken die slechts een deel van de gegevens selecteert, bijv.
create view v_my_table as
select *
from my_table
where score > 4;
grant select on v_my_table to user_B;
Als u dit doet, ziet gebruiker B alleen rijen waarvan de score hoger is dan 4.
Als er gebruiker C is, kan deze absoluut niets zien. Als je wilt dat het wat gegevens ziet, zou je doen wat je al deed met gebruiker B - bepaalde privileges verlenen.
Er is echter een optie om gebruiker B rechten te laten "doorsturen" naar andere gebruikers - u zou with grant option
gebruiken , bijv.
grant select on my_table to user_B with grant option;
Dat zou gebruiker B in staat stellen selectie toe te kennen aan andere gebruikers, bijvoorbeeld
grant select on user_A.my_table to user_C;
Ten slotte (over dit antwoord gesproken), als er veel gebruikers zijn aan wie u dergelijke rechten wilt verlenen, kunt u rollen maken . Dan zou je privileges toekennen aan een rol, en een rol toekennen aan een andere gebruiker(s). Hiermee kunt u rollen aanpassen aan uw (en andere gebruikers) wensen.
create role my_role;
grant select on my_table to my_role;
Om te beginnen zou je bijvoorbeeld select
. kunnen verlenen naar my_role
, en geef vervolgens my_role
voor gebruikers B, C en D.
grant my_role to user_B;
grant my_role to user_C;
Later kunt u insert
. verlenen naar my_role
grant insert on my_table to my_role;
en alle gebruikers die my_role
. hebben gekregen zou automatisch rijen kunnen invoegen in de my_table van gebruiker A.