* MySQL'de tüm kullanıcılar ve yetkileri, "mysql" isimli bir veritabanında tutulur.
* Bir kullanıcı iki parçadan oluşur : kullanici_ismi@bilgisayar_ismi (hostname). Bu ikiliyi MySQL tek bir kullanıcı olarak algılar. Yani ahmet@localhost ile ahmet@penguen aynı kullanıcılar değildir (localhost ve penguen aynı makinalar olsa dahi).
* Bir kullanıcının 4 yetki seviyesi vardır. Her yetki seviyesi için mysql isimli veritabanında birer tablo bulunur.
* Hiyerarşik olarak bu tablolar en genelden özele doğru tanımlama yapar.
* User tablosu : Bağlanan kullanıcının sunucuya bağlanma hakkı olup olmadığını kontrol eder. Eğer erişim hakkı varsa, kullanıcı tabloda kendisi için belirtilen yetkilere sahip olur.
* Db tablosu : Hangi kullanıcıların hangi veritabanlarına hangi bilgisayarlardan ulaşabileceğini belirler. Eğer kullanıcının ilgili veritabanına erişim hakkı varsa, tabloda kendisi için belirtilen yetkilere sahip olur.
* Tables_priv tablosu : Aynı db tablosu gibi çalışır, ancak veritabanları yerine içindeki tablolara erişimi düzenler.
* Columns_priv tablosu : Aynı db ve tables_priv tabloları gibi çalışır, ancak veritabanlarının içindeki tabloların içindeki kolonlara erişimi düzenler.
mysql veritabanı
|
|
user
|
|
db
|
|
tables_priv
|
|
columns_priv
* Yetki tabloları ve mysql isimli veritabanı, normal MySQL veritabanları gibi çalışır. INSERT, UPDATE, DELETE gibi standart sql komutları ile tıpkı herhangi bir veritabanı üzerinde işlem yapıyor gibi kullanıcı tanımları yapabilirsiniz.
Kullanıcılara Verilebilen Yetkiler
* Select_priv : Kayıtları okuma
* Insert_priv : Kayıt ekleme
* Update_priv : Kayıt değiştirme/güncelleme
* Delete_priv : Kayıt silme
* Create_priv : Veritabanı/tablo yaratma
* Drop_priv : Veritabanı/tablo kaldırma
* Reload_priv : MySQL'i yeniden başlatma
* Shutdown_priv : MySQL'i kapatma
* Process_priv : MySQL'de çalışan işlemleri takip etme
* File_priv : Sunucudan dosya okuyup / yazma
* Grant_priv : Başka kullanıcılara yetki verme
* Index_priv : Indeks yaratma, değiştirme, silme
* Alter_priv : Tablo ya da veritabanının yapısını değiştirme
* Show_db_priv : Veritabanı listeleme
* Lock_tables_priv : Tablo kitleme
* Max_questions : Bir saat içinde yapılabilecek enfazla sorgu sayısı
* Max_updates : Bir saat içinde yapılabilecek en fazla güncelleme sorgusu sayısı
* Max_connections : Bir saat içinde yapılabilecek en fazla bağlantı sayısı
MySQL'in kullanıcı tablolarında herhangi bir değişiklik yaptığınız zaman, değişikliklerin aktif hale gelebilmesi için FLUSH PRIVILEGES komutunu MySQL sunucusuna göndermeniz gerekir.