oracle zarzadzanie uzytkownikami - ghdrako/doc_snipets GitHub Wiki

Zarządzanie użytkownikami

W bazach istnieje nazwy kont personalnych w formacie 'IMIE.NAZWISKO' (np. JAN.KOWALSKI). Taka forma wymaga użycia cudzysłowu przy odwoływaniu się do użytkownika, ponieważ w innym przypadku oracle potraktuje ja jako separator schematu i obiektu i zwróci błąd.

Wylistowanie użytkowników w bazie

SELECT username FROM dba_users;

Wyświetlenie danych konta użytkownika i jego uprawnień

SELECT account_status,created FROM dba_users WHERE username = 'NAZWA_UZYTKOWNIKA';
SELECT privilege FROM dba_sys_privs WHERE grantee='NAZWA_UZYTKOWNIKA';
SELECT owner, table_name, privilege FROM dba_tab_privs WHERE grantee='NAZWA_UZYTKOWNIKA';
SELECT granted_role FROM dba_role_privs WHERE grantee='NAZWA_UZYTKOWNIKA';

Zmiana hasła

ALTER USER <nazwa_uzytkownika> IDENTIFIED BY <nowe_haslo>;

Odblokowanie użytkownika

ALTER USER <nazwa_uzytkownika> ACCOUNT UNLOCK;

Zablokowanie użytkownika

ALTER USER <nazwa_uzytkownika> ACCOUNT LOCK;

Utworzenie użytkownika

CREATE USER <nazwa_uzytkownika> IDENTIFIED BY <haslo>
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

Nadawanie uprawnień

  • Minimalne uprawnienie aby użytkownik mógł sie zalogować
GRANT CREATE SESSION TO <nazwa_uzytkownika>;
  • Przykładowy zestaw uprawnień/rol dla programisty aby mógł tworzyć obiekty we własnym schemacie
GRANT CREATE SESSION TO <nazwa_uzytkownika>;
GRANT RESOURCE TO <nazwa_uzytkownika>;
GRANT CREATE VIEW, CREATE SYNONYM TO <nazwa_uzytkownika>;
  • Przykładowy zestaw uprawnień do podglądu wszystkich tabel w bazie. Szerokie uprawnienie wiec raczej na środowiskach testowych
GRANT CREATE SESSION TO <nazwa_uzytkownika>;
GRANT SELECT ANY TABLE TO <nazwa_uzytkownika>;
GRANT SELECT ANY DICTIONARY TO <nazwa_uzytkownika>;
  • Nadanie szczegołowyc uprawnienia dla konkretnej tabeli
GRANT SELECT ON <schemat>.<tabela> TO <nazwa_uzytkownika>;   -- odczyt danych z tabeli
GRANT SELECT,INSERT,UPDATE,DELETE ON <schemat>.<tabela> TO <nazwa_uzytkownika>; -- odczyt i modyfikacja
  • Wygenerowanie uprawnien select dla wszyskich tabel danego schematu
SELECT 'grant select on '||<nazwa_schematu>||'.'||table_name||' to ''<nazwa_uzytkownika>'';' 
  FROM all_tables 
 WHERE owner = '<nazwa_schematu>';

wynik zapytania to polecenia grant nadajace uprawnienia

przyklad

SELECT 'grant select on '||owner||'.'||table_name||' to ''JAN.NOWAK'';' 
  FROM all_tables 
 WHERE owner = 'DIPOCKET';
⚠️ **GitHub.com Fallback** ⚠️