Czy ktoś może mi powiedzieć, jak wyświetlić wszystkie uprawnienia / reguły określonego użytkownika w konsoli sql?
źródło
Czy ktoś może mi powiedzieć, jak wyświetlić wszystkie uprawnienia / reguły określonego użytkownika w konsoli sql?
Możesz wypróbować poniższe widoki.
SELECT * FROM USER_SYS_PRIVS;
SELECT * FROM USER_TAB_PRIVS;
SELECT * FROM USER_ROLE_PRIVS;
Administratorzy baz danych i inni użytkownicy zaawansowani mogą znaleźć uprawnienia nadane innym użytkownikom za pomocą DBA_
wersji tych samych widoków. Są ujęte w dokumentacji .
Te widoki pokazują tylko uprawnienia nadane bezpośrednio użytkownikowi. Znalezienie wszystkich uprawnień, w tym uprawnień nadanych pośrednio przez role, wymaga bardziej skomplikowanych rekurencyjnych instrukcji SQL:
select * from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER' order by 1,2,3;
select * from dba_sys_privs where grantee = '&USER' or grantee in (select granted_role from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER') order by 1,2,3;
select * from dba_tab_privs where grantee = '&USER' or grantee in (select granted_role from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER') order by 1,2,3,4;
Istnieją różne skrypty, które to robią w zależności od tego, jak szalony chcesz się stać. Osobiście użyłbym skryptu find_all_privs Pete'a Finnigana .
Jeśli chcesz napisać to sam, zapytanie jest dość trudne. Użytkownikom można nadawać uprawnienia systemowe, które są widoczne w DBA_SYS_PRIVS
. Można im nadać uprawnienia do obiektów, które są widoczne wDBA_TAB_PRIVS
. I można im przypisać role, które są widoczne w DBA_ROLE_PRIVS
(role mogą być domyślne lub inne i mogą również wymagać hasła, więc tylko dlatego, że użytkownikowi nadano rolę, nie oznacza, że użytkownik może koniecznie korzystać z uprawnień, które nabyte domyślnie przez rolę). Ale te role mogą z kolei być nadane uprawnienia systemowe, przywileje obiektu i dodatkowe role, które mogą być oglądane przez patrząc ROLE_SYS_PRIVS
, ROLE_TAB_PRIVS
i ROLE_ROLE_PRIVS
. Skrypt Pete'a przechodzi przez te relacje, aby pokazać wszystkie uprawnienia, które ostatecznie wpływają na użytkownika.
SYS
przywilejów i chcą tylko przyjrzeć się przywilejom własnego konta, scenariusz jest całkowicie bezwartościowy. Nie mam dostępu doUTL_FILE
AniDBA_SYS_PRIVS
, a drugiDBA
iSYS
obszarach spojrzenia na skryptów.ROLE_SYS_PRIVS
,ROLE_TAB_PRIVS
iROLE_ROLE_PRIVS
musi zostać zbadane. Dokumenty wskazują, że są przeznaczone dla bieżącego użytkownika.Kolejny przydatny zasób:
http://psoug.org/reference/roles.html
źródło
DBA
aniSYS
ról, a chcesz po prostu znaleźć uprawnienia swojego własnego konta.Chociaż odpowiedź Raviteja Vutukuri działa i jest łatwa do złożenia, nie jest szczególnie elastyczna w zmienianiu filtrów i nie pomaga zbytnio, jeśli chcesz zrobić coś programowo. Więc ułożyłem własne zapytanie:
Zalety:
WHERE
klauzulę.DBMS_OUTPUT
czegoś (w porównaniu do połączonego skryptu Pete'a Finnigana). Dzięki temu jest przydatny do użycia programistycznego i do eksportowania.GRANT
.źródło
USER_SYS_PRIVS
(uprawnienia nadane bezpośrednio do systemu),USER_TAB_PRIVS
(uprawnienia nadane bezpośrednio do obiektu)USER_ROLE_PRIVS
(role bezpośrednio nadane użytkownikowi),ROLE_ROLE_PRIVS
( uprawnienia do dziedziczenia ról),ROLE_SYS_PRIVS
(uprawnienia systemowe przez role) iROLE_TAB_PRIVS
(uprawnienia do obiektów przez role). Fuj. Oracle jest tak skomplikowana.Możesz użyć poniższego kodu, aby uzyskać listę wszystkich uprawnień od wszystkich użytkowników.
źródło
Aby wyświetlić wszystkie uprawnienia:
źródło