folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder Oracle 11G R2 - Kullanıcı Arası İzinler Üzerine Ufak Bir Doküman.



Oracle 11G R2 - Kullanıcı Arası İzinler Üzerine Ufak Bir Doküman.

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unix
    Andrei
    Andrei's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Aralık/2008
    Erkek

    konsoldan veritabanına baglanarak sql*plus üzerinden islemleri yapacagız.

    öncelikle apex'de tam yetkili olan bir kullanıcıyla giris yapalım, bu sizin belirlemis oldugunuz bir kullanıcı veya sysdba olabilir.

    1-) $ sqlplus "/as sysdba" veya $ sqlplus kullaniciadi/sifre seklinde giris yapalım.

    2-) öncelikle bir kullanıcı olusturalım :

    create user tahribat identified by tahribat;

    3-) olusturdugumuz kullanıcıya sisteme baglanma izni verelim :

    grant create session to tahribat;

    4-) ikinci bir kullanıcı olusturalım :

    create user tahribat2 identified by tahribat2;

    5-) ilk kullanıcıya verilen izinden ayrı olarak, tablo olusturma ve tabloda yazım izni verelim :

    grant create session, create table, resource to tahribat2;

    6-) konsoldan cıkmadan ikinci kullanıcıyla login olalım :

    conn tahribat2/tahribat2;

    7-) bu kullanıcıya tablo olusturma izni vermistik, tablomuzu olusturduktan sonra rastgele bir deger girelim :

    create table deneme(d varchar2(10));

    insert into deneme values ('HolyOne');

    8-) islemleri commit edelim (en kısa tabiriyle güncellemeyi onaylatıyoruz) :

    commit;

    9-) tekrar birinci kullanıcıyla giris yapalım :

    conn tahribat/tahribat;

    10-) simdi alttaki sorguyu calıstırıp, ikinci kullanıcının olusturdugu tabloda select islemi yapmak istedigimizde bize ORA-00942 kodlu hatayı döndürerek, böyle bir nesnenin olmadıgını söyleyecek :

    select * from tahribat2.deneme;

    11-) ikinci kullanıcıyla login olarak, birinci kullanıcıya gereken izinleri verelim :

    conn tahribat2/tahribat2;

    grant select on deneme to tahribat;

    12-) yeniden ilk kullanıcıyla login olup, select sorgusunu calıstırdıgımızda bu sefer hata vermeyecektir :

    conn tahribat/tahribat;

    select * from tahribat2.deneme;

     

    burada sadece "select" isleci icin izin vermis olduk, yani "tahribat" isimli kullanıcı, "tahribat2" isimli kullanıcının tablosunda update, delete, insert gibi DML isleclerini kullanamaz. eger tüm fonksiyonları acmak istersek "grant all privileges ..." seklinde sorgu kullanılabilir ama ayrı ayrı izin verilmek istendiginde bu sekilde islem yapılabilir.

    13-) izinleri kaldırmak istedigimizde bu sorguyu kullanabiliriz :

    revoke select on deneme from tahribat;

     

    belki diyeceksiniz ki "500 calısanı olan bir sirketin veritabanında herkese ayrı ayrı izin mi verilir ?"

     

    hayır, bunun icin ROLE adlı bir nesne mevcut, 500 calısanın 100'er kisilik 5 grubuna ayrı ayrı rol olusturarak, tek bir satırlık kodla tüm izinleri aynı anda degistirebilirsiniz, o konuya simdilik girmeyecegim, sonradan ekleme yaparak, acacagım blogda o sekilde paylasabilirim.


    %40 indirimli olarak "Centos Sistem ve Sunucu Yönetimi" adlı kitabımızı satın alarak, Linux üzerine yapılacak olan devam projeleri icin destekte bulunabilirsiniz : http://www.hepsiburada.com/centos-sistem-ve-sunucu-yonetimi-oku-izle-dinle-ogren-p-KKODLAB01579
Toplam Hit: 1053 Toplam Mesaj: 1