sql >> Databasteknik >  >> RDS >> Oracle

Skillnad mellan fråga om privilegier i tabeller

De är ganska olika, ja.

I Oracle kan privilegier på en tabell beviljas antingen direkt till en användare (i vilket fall de skulle visas i ALL_TAB_PRIVS ) eller privilegier kan ges till en roll (visas i ROLE_TAB_PRIVS ) och den rollen kan tilldelas en användare (visas i USER_ROLE_PRIVS ). Den första frågan visar användarna som har direkta anslag på en tabell. Den andra frågan visar användarna som har beviljats ​​en roll som har beviljats ​​åtkomst till tabellen (observera att du i båda fallen verkligen borde ange en OWNER förutom tabellnamnet). Inte heller kommer att visa dig information om anslag som har gjorts genom flera kapslade nivåer av roller (dvs. Användare A har beviljats ​​Roll 1, Roll 1 har beviljats ​​Roll 2, Roll 2 har beviljats ​​åtkomst till en tabell). Anslag som görs via roller kan också bli lite knepigt eftersom det finns standard- och icke-standardroller och lösenordsskyddade roller och roller kan aktiveras och inaktiveras i en session.

I allmänhet skulle jag föreslå att du tar en titt på skripten som finns på Pete Finnigans webbplats om du vill ha något som täcker alla möjliga fall. I det här fallet vill du förmodligen använda hans who_can_access-skript för att avgöra vilka användare som kan komma åt en viss tabell.




  1. PHP PDO returnerar inkonsekventa resultat för SELECT FOUND_ROWS()

  2. Hur man anropar Oracle-funktion som har SYS_REFCURSOR som OUT-parameter

  3. SQL-kommando för att lista och visa alla databaser i MySQL och MariaDB

  4. SQL Server Tutorial – Allt du behöver för att bemästra Transact-SQL