MySQL – Kullanıcı Yetkilendirme

Merhaba arkadaşlar. Bu yazımda veri tabanı sistemlerinde kullanılan kullanıcı yetkilendirme özelliğinden bahsedeceğim.

Bildiğiniz üzere her veri tabanı sisteminde bir ya da birden fazla kullanıcı bulunmaktadır ve her veri tabanı kullanıcısının belli yetkileri vardır. Mesela sistem admini veri tabanıyla ilgili tüm yetkilere sahipken başka bir veri tabanı kullanıcısı sadece ona verilmiş yetkileri kullanabilir.
Bu yetkiler temelde ikiye ayrılır.

Birincisi tablo şeması üzerinde sahip olunan yetkilerdir. Bu yetkilere örnek verecek olursak; tabloya yeni bir alan ekleme olabilir, alanın veri tipini değiştirmek olabilir, tablo eklemek veya silmek olabilir. Kısacası bu yetkiler sadece tablonun şeması üzerinde kullanılabilecek yetkilerdir.
İkincisi ise tablo verisi üzerinde sahip olunan yetkilerdir. Bu yetkilerin ne olduğundan bahsedecek olursak; tabloya yeni kayıt ekleme (insert), tablodaki kayıtları çekme(select), tablodaki kayıtları güncelleme(update) ve tablodaki kayıtları silme(delete) işlemlerinin hepsi bu yetkiler sayesinde yapılır.

Peki herhangi bir veri tabanı kullanıcısına nasıl yetki verilir, bundan bahsedelim.
İlk önce bir kullanıcı yaratalım.
MySQL’de kullanıcı yaratmak için CREATE USER komutunu kullanırız.

CREATE USER ‘username’@’localhost’ IDENTIFIED BY ‘password’

Kullanıcımızı yarattıktan sonra sıra geldi yetki vermeye..
MySQL’de herhangi bir kullanıcıya yetki vermek için GRANT komutunu kullanırız.

GRANT privileges ON object TO user;
privileges : kullanıcıya verilmek istenen ayrıcalıklardır.
object : veri tabanının ismi veya herhangi bir veri tabanındaki tablonun ismidir.
user : yetkilerin verileceği kullanıcıdır.

Birkaç örnek yaparsak;
GRANT ALL ON magaza TO ‘hakan’@’localhost’;
Bu sorgunun görevi; magaza veri tabanındaki tüm yetkileri hakan adlı kullanıcıya vermektedir. Tüm yetkileri verdiğimiz için kısaca ALL komutunu kullanabiliriz.

GRANT SELECT,INSERT,ALTER ON okul TO ‘zeynep’@’localhost’;
Bu sorgunun görevi ise; okul veri tabanındaki SELECT, INSERT ve ALTER yetkilerini zeynep adlı kullanıcıya vermektir.

Peki bir kullanıcının yetkilerini nasıl geri alırız bunu açıklayalım.
MySQL’de yetki geri alma işlemi REVOKE komutuyla yapılmaktadır.
REVOKE privileges ON object FROM user;

Örnek olarak birkaç sorgu yazarsak;
REVOKE DELETE,UPDATE ON magaza FROM ‘hakan’@’localhost’;
Bu sorgunun görevi; hakan adlı kullanıcıdan mağaza veri tabanı üzerindeki kayıt silme ve kayıt güncelleme yetkilerini geri almaktır.

REVOKE SELECT ON okul FROM ‘*’@’localhost’;
Bu sorgunun görevi ise; tüm kullanıcıların okul veri tabanı üzerindeki kayıt görüntüleme yetkisini geri almaktır. ‘*’ işareti tüm kullanıcıları belirtmek için kullanılmıştır.

Tabi yetkilendirme işlemleri sadece bunlarla sınırlı değildir. Yetkilendirme işlemleri fonksiyonlar, prosedürler veya triggerlar üzerinde de yapılabilir.

PL/SQL Nedir.. Neden Kullanılır..

Merhaba arkadaşlar.. Bugün size üzerinde çalıştığım PL/SQL teknolojisini anlatmaya çalışacağım.
Belki çoğunuz bu teknoloji hakkında yeterli bilgiye sahip değildir hatta ismini duymamış olanlar bile vardır. Daha çok bu teknolojinin nedir neden kullanılır ve nerelerde rol oynar bunun üzerinde duracağım.

1-PL/SQL Nedir, Neden Kullanılır?
PL/SQL yapısal dillerin SQL’e eklenmesi sonucu oluşan Oracle’a has bir dildir. PL/SQL kullanarak her türlü SQL cümleciği yazabilirsiniz. Dinamik SQL ifadeleri oluşturup, çalıştırabilirsiniz.En önemliği özelliği de PL/SQL uygulamaları veri tabanı kısmında çalışırlar. Böylece sorguların istemciden sunucuya ya da tekrar sunucudan istemciye gitmesine gerek yoktur. Yani ağ trafiği de azalmış olur.

2-PL/SQL Yapısal Özellikler
PL/SQL, SQL cümlelerine blok yapılarının, şart cümlelerinin, döngülerin vs. diğer özelliklerin eklenmesiyle oluşmuş bir dildir. En temel yapı birimi bloktur. Bir veya birden fazla bloktan oluşabilirler. Akış kontrolü sayesinde yapısal dillere ait olan şart cümleleri ve döngüler PL/SQL bloklarında kullanılabilir. Böylece yazılan programlar çok etkin ve hızlı hale gelmektedir. Eğer bu özellik olmasaydı SQL cümlelerini ayrı ayrı yazmak ve çalıştırmak gerekecekti.Bu da performansı azaltan etkenlerden bir tanesidir.

3-Blok Yapısı
Birbirleriyle ilişkili ifadelerin mantıksal bölümlere ayrılması demektir. Değişken tanımlamaları ve hata kontrolleri de her blok içerisinde yapılabilir. PL/SQL blok yapısı üç bölümden oluşur.Bunlar;

  • Bildirim Deyimleri
  • Program Komutları (Zorunlu!)
  • Aykırı Durumlar (Exception ifadeleri)

Bu üç bölümden sadece ikincisi zorunludur. Klasik bir PL/SQL blok yapısı şu şekildedir.

Şimdi de bu ifadede geçen komutları kısaca tanıyalım.

  • DECLARE : Blok içerisinde kullanılan değişkenlerin tanımlandığı bölümdür.
  • BEGIN : Bloğun başlangıcını belirten referans isimdir
  • EXCEPTION : Aykırı durumların başlangıcını belirten rezerve isimdir. Hata durumlarında neler yapılacağını kontrol eder.
  • END : Bloğun sonunu belirten referans isimdir.

Not:Exception kısmı nesneye yönelik programlama dillerindeki try/catch’e çok benzer. Bir hata olduğunda ne yapacağını belirtir.

Örnek bir blok yapısı yapalım.