Oracle Kullanıcı, Yetki, Rol tanımları

Oracle Kullanıcı, Yetki, Rol tanımları

Yeni kullanıcıyı oracle EM üzerinden oluşturabileceğimiz gibi SQL komutlarıyla da yapabiliriz.
Aslında EM üzerinden yaptığımız herşeyin bir SQL komut karşılığı var.

Kullanıcı oluşturmak:
SQL> CREATE USER “USERNAME” PROFILE “DEFAULT” IDENTIFIED BY PASSWORD
         DEFAULT TABLESPACE “USERS” TEMPORARY TABLESPACE “TEMP”

DEFAULT TABLESPACE “USERS” ile kullanıcının depolama tablespace’ni belirtiyoruz.
TEMPORARY TABLESPACE “TEMP” ile kullanıcının temp tablespace’ini belirtiyoruz.
PROFILE “DEFAULT” ile hangi profile dahil olacağını belirtiyoruz.Komutu Kısa olarak aşağıdaki gibi de yazabilirsiniz.Oracle default tbs ve temp tbs için aşağıdaki sorgu sonucu dönen tbs’leri atayacaktır.

SQL> Create User OMERA identified by sifre;

SQL> Select * from database_properties where property_name like ‘%TABLESPACE’;

Kullanıcıyı oluşturduktan sonra hangi tablespace’i kullanacaksa kota belirlemeliyiz ya da sınırsız kota verebiliriz.

Kullanıcıya tablespace kotası vermek:

SQL> ALTER USER OMERA QUOTA UNLIMITED ON  USERS;  –sınırsız kota

SQL> ALTER USER OMERA QUOTA 100M ON  USERS;  –100 MB kota

Kullanıcıyı Locked Olarak oluşturmak:
SQL> Create user deneme identified by password123 account lock;

Kullanıcıyı Password Expire Olarak oluşturmak:
Kullanıcı ilk girişinde şifre değiştirmek zorunda bırakıır.
SQL> Create user deneme identified by password123 password expire;

Şifre Değiştirmek:
SQL> Alter User OMERA identified by yenisifre;

Yeni bir kullanıcı oluşturduğunuzda hiç bir yetkisi olmadan oluşur,database’e bağlanamaz.
bazı temel hakları vermemiz gerekir.
SQL> GRANT CONNECT, RESOURCE to OMERA;

Kullanıcıyı lock etmek;
SQL> alter user OMERA account lock;

Kullanıcıyı unlock etmek;
SQL> alter user OMERA account unlock;

Locklı kullanıcıları görmek:
SQL> Select username, account_status from dba_users where account_status like ‘%LOCKED%’;

Şifresi Expire olan kullanıcıları görmek:
SQL> Select username, account_status from dba_users where ACCOUNT_STATUS LIKE ‘%EXPIRED%’;

Kullanıcıyı drop etmek:
Kullanıcyı drop etmeniz için database’e bağlı olmaması gerekir.bağlıysa ve drop etmek isterseniz
ORA-01940: cannot drop a user that is currently connected hatası alırsınız.
Önce session’ını kill edip sonra drop ediniz.
SQL> DROP USER NEWUSER;

Kullanıcıyı nesneleriyle drop etmek:
SQL> DROP USER NEWUSER CASCADE;

YETKİLER:
Kullanıcının veritabanında  işlem yapması için(bağlanma,silme,ekleme,sorgulama) yetkilerinin olması gerekir.Yetkiler GRANT komutu ile verilir, REVOKE komutu ile geri alınır.Yetkiler 2ye ayrılıyor.

1-Sistem yetkileri:

Database’e bağlanma,alter etme vb sistem yetkileridir.
SQL> SELECT * FROM  DBA_SYS_PRIVS;
sorgusuyla kimde hangi sistem yetkisi var görülebilir.

Yetki vermek:
SQL> GRANT CREATE TABLE TO OMERA;
SQL> GRANT CREATE SESSION TO OMERA;

Yetki verilen kullanıcı WITH ADMIN OPTION ile verilen yetkileri başkalarına verebilir.WITH ADMIN OPTION demezsek sadece kendisi kullanabilir.

With Admin Option Yetkisi:
SQL> GRANT Alter Session TO OMERA WITH ADMIN OPTION;

Yetkiyi Geri Almak:
SQL> REVOKE CREATE TABLE FROM OMERA;

Yetkiyi verdiği diğer userlardan da almak:
CASCADE CONSTRAINT anahtar kelimesi kullanılır.
SQL> REVOKE CREATE TABLE FROM OMERA CASCADE CONSTRAINT;

2-Obje yetkileri:
Oracle nesnelerine verilen yetkilerdir.
SQL> SELECT * FROM DBA_TAB_PRIVS;  Sorgusuyla obje yetkileri görülebilir.
SQL> GRANT SELECT ON SH.SALES TO OMERA; — SH.SALES üzerinde select yetkisi
SQL> GRANT EXECUTE ON FIND_VALUE TO OMERA; –Plsql procedure execute yetkisi

Çoklu yetki vermek:
SQL> GRANT SELECT,DELETE,UPDATE ON SH.SALES TO IFSAPP,OMERA;

Yetkiyi Diğer userlara da verebilmesi :
Yetki verilen kullanıcı WITH GRANT OPTION ile verilen yetkileri başka kullanıcılara da verebilir.
SQL> GRANT SELECT ON SH.SALES TO OMERA WITH GRANT OPTION;

Yetkileri geri almak:
SQL> REVOKE SELECT ON SH.SALES FROM OMERA;

Yetkiyi verdiği diğer userlardan da almak:
CASCADE CONSTRAINT anahtar kelimesi kullanılır.
SQL> REVOKE SELECT ON SH.SALES FROM OMERA CASCADE CONSTRAINT;

Oracle Role:
Sistem ve obje yetkilerinin toplandığı oracle nesnesidir.Role sistemiyle yetkilendirme işlemleri daha basit bir hale getirilmiştir.Örneğin Muhasebe diye bir rol oluşturup bu role yetkileri tanımlayıp,rolu kullanıcılara verebiliriz.Role yetki tanımlarını bir kere yapıp dinamik olarak kullanmış oluruz. Ve bir kullanıcı grubundan yetki almak istersek, rolden yetkiyi çıkarmamız yeterli olacaktır.Yetki kullanıcılardan da otomatik çıkmış olacaktır.

Yetki Vermek:
SQL> GRANT SELECT,UPDATE;DELETE,INSERT ON HR.EMPLOYEES TO INSANKAYN;
–INSANKAYN rolune HR employes tablosunu select etme,silme,giriş ve güncelleme yetkisi

Role’dan yetki geri almak:
SQL> REVOKE SELECT,UPDATE;DELETE,INSERT ON HR.EMPLOYEES FROM INSANKAYN;

Rolü kullanıcıya atamak:
SQL> GRANT INSANKAYN TO OMERA;

Rolü Kullanıcıdan geri almak:
SQL> REVOKE INSANKAYN FROM OMERA;

Rolü role atamak:
SQL> GRANT INSANKAYN TO GENELMUDUR;

Rolü rolden geri almak:
SQL> REVOKE INSANKAYN FROM GENELMUDUR;

Rolü Drop Etmek:
SQL> DROP ROLE INSANKAYN;

Hangi kullanıcılar hangi rollere sahip:
SQL> Select * from DBA_ROLE_PRIVS;

Hangi rol hangi rollere sahip:
SQL> Select * from ROLE_ROLE_PRIVS;

Sistemde tanımlı tüm roller: (PUBLIC hariç)
SQL> Select * from DBA_ROLES;

Puplic Rolü:
Veritabanı oluşturulurken otomatik oluşturulan gizli roldür.Tüm database kullanıcılarında bulunur, bu yüzden yetki verirken dikkat etmek gerekiyor, çünkü verdiğiniz yetki tüm kullanıcılara verilmiş olacaktır.DBA_ROLES viewinde gözükmez.

Umarım işinize yarar..

Tagged: , , , , , , , , ,

1 comment

  1. Emre 20 Ekim 2017 at 09:08 Reply

    çok faydalı bir paylaşım. çok teşekkür ederim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir