sql >> Database >  >> RDS >> Oracle

Verschil tussen het opvragen van privileges in tabellen

Ze zijn heel anders, ja.

In Oracle kunnen privileges op een tafel ofwel rechtstreeks aan een gebruiker worden verleend (in dat geval zouden ze verschijnen in ALL_TAB_PRIVS ) of privileges kunnen worden toegekend aan een rol (zichtbaar in ROLE_TAB_PRIVS ) en die rol kan worden toegekend aan een gebruiker (zichtbaar in USER_ROLE_PRIVS ). De eerste query toont u de gebruikers die directe subsidies op een tafel hebben. De tweede query toont u de gebruikers die een rol hebben gekregen die toegang tot de tabel heeft gekregen (merk op dat u in beide gevallen echt een OWNER moet opgeven naast de tabelnaam). Evenmin wordt informatie weergegeven over toekenningen die zijn gedaan via meerdere geneste niveaus van rollen (d.w.z. gebruiker A heeft rol 1 gekregen, rol 1 heeft rol 2 gekregen, rol 2 heeft toegang gekregen tot een tabel). Subsidies die via rollen worden gedaan, kunnen ook een beetje lastig worden, omdat er standaard- en niet-standaardrollen zijn en met een wachtwoord beveiligde rollen en rollen in een sessie kunnen worden in- en uitgeschakeld.

Over het algemeen raad ik aan om de scripts te bekijken die beschikbaar zijn op de site van Pete Finnigan als u iets wilt hebben dat alle mogelijke gevallen dekt. In dit geval wil je waarschijnlijk zijn who_can_access script gebruiken om te bepalen welke gebruikers toegang hebben tot een bepaalde tabel.




  1. MySQL Socket weigert verbinding na duizenden opeenvolgende verbindingen

  2. Beperk het aantal rijen waaraan u wilt deelnemen, in mysql

  3. String_agg voor SQL Server vóór 2017

  4. Oracle SQL - Query 2-tabellen op basis van hun externe sleutels