V dalším díle tohoto seriálu si řekneme, jaká oprávnění uživatel potřebuje k připojení k serveru, jak udělit a odebrat oprávnění, jak zamknout nebo odemknout účet, jaká práva jsou potřeba pro vytváření tabulek a jak uživateli přiřadit tablespace v databázích Oracle 10g.
Potřebná oprávnění uživatele pro připojení k Oracle serveru
Oracle zakazuje připojení uživatelům, kteří nemají oprávnění CREATE SESSION. Viz následující ukázka:
C:>sqlplus /nolog SQL> connect SYSTEM/password Connected. SQL> create user DEV identified by developer account unlock; User created. SQL> disconnect SQL> connect DEV/developer ORA-01045: user DEV lacks CREATE SESSION privilege; logon denied
Tato chybová hláška je dostatečně výmluvná, že?
Udělení oprávnění CREATE SESSION
Pokud chceme uživateli přiřadit oprávnění CREATE SESSION, musíme použít příkaz GRANT. V následujícím příkladu můžeme vidět, jak přiřadit toto oprávnění našemu uživateli DEV:
C:>sqlplus /nolog SQL> connect SYSTEM/password Connected. SQL> grant create session to dev; Grant succeeded. SQL> disconnect SQL> connect DEV/developer Connected.
Odebrání oprávnění CREATE SESSION
Chceme-li uživateli odebrat oprávnění CREATE SESSION, musíme použít příkaz REVOKE, jak ukazuje následující příklad:
C:>sqlplus /nolog SQL> connect SYSTEM/password Connected. SQL> revoke create session from dev; Revoke succeeded. SQL> disconnect SQL> connect DEV/developer ORA-01045: user DEV lacks CREATE SESSION privilege; logon denied
Jak zamknout/odemknout uživatelský účet
Pokud chceme na krátkou dobu zamknout účet nějakého zlobivého uživatele a později jej odemknout, musíme použít příkaz ALTER USER…ACCOUNT. Jak je ukázáno zde:
C:>sqlplus /nolog SQL> connect SYSTEM/password SQL> alter user DEV account lock; User altered. SQL> disconnect SQL> connect DEV/developer ORA-28000: the account is locked SQL> connect SYSTEM/password SQL> alter user DEV account unlock; User altered. SQL> disconnect SQL> connect DEV/developer Connected.
Potřebná oprávnění pro vytváření tabulek
Aby uživatel mohl ve svém schématu vytvářet tabulky, potřebuje oprávnění CREATE TABLE nebo oprávnění CREATE ANY TABLE. Druhé jmenované je mocnější a povoluje uživateli vytváření tabulek i v jiných schématech.
Následující příkladu ukazuje jak přiřadit oprávnění CREATE TABLE:
C:>sqlplus /nolog SQL> connect DEV/developer SQL> create table fyi (id NUMBER); ORA-01031: insufficient privileges SQL> disconnect SQL> connect SYSTEM/password SQL> grant create table to dev; Grant succeeded. SQL> disconnect SQL> connect DEV/developer SQL> create table fyi (id NUMBER); ORA-01950: no privileges on tablespace 'SYSTEM'
Tato poslední chybová zpráva znamená, že uživatel “DEV” není oprávněn používat tablespace “SYSTEM”. Proto mu musíme přiřadit jeho vlastní tablespace – viz následující bod.
Jak přiřadit uživateli tablespace
Když vytvoříme nějakého nového uživatele, Oracle mu přiřadí defaultně tablespace SYSTEM. Chceme-li toto změnit, můžeme přiřadit uživateli jiný tablespace použitím příkazu ALTER USER.
Následující příklad nám ukazuje jak změní výchozí tablespace uživatele DEV a přiřadí mu 4MB prostoru:
C:>sqlplus /nolog SQL> connect SYSTEM/password SQL> alter user dev default tablespace users; User altered. SQL> alter user dev quota 4M on users; User altered. SQL> disconnect SQL> connect DEV/password SQL> create table fyi (id NUMBER); Table created. SQL> drop table fyi; Table dropped. SQL> create table fyi (id NUMBER); Table created.
Jak můžeme vidět, uživatel “DEV” už může vytvořit a smazat tabulky.
Pokud chceme, aby uživatel neměl žádná omezení na vytváření tabulek v tablespace, přiřadíme mu systémové oprávnění UNLIMITED TABLESPACE.