Sunucu Yönetimi, Kullanıcı Oluşturma ve Hakları

MySQL sunucu yönetimi, sunucu kurulduğu anda  mysql isminde veritabanı oluşur. Bu veritabanın da 5 adet tablo vardır, bu tablolar kullanıcı ve onların erişim haklarını denetlerler.

  • user tablosu kullanıcıların sunucuya hangi host makinadan hangi haklarla bağlanabileceğini belirler. Bu tabloda bulunan haklar kullanıcıya global olarak verilir ve verilen haklar istisnasız tüm veritabanları üzerinde etkili olur. Host alanı ise tam tersine bağlanabilecek tüm hostları içermelidir. Diğer tablolarda bunların dışında host alanı girilmesi anlam taşımayacaktır.
  • db tablosu kullanıcıların belirli bir veritabanına hangi haklarla erişebileceğini gösterir. Global olarak sahip olunmayan hakları verebilir, ancak global olarak sahip olunan hakları kaldıramaz. Yani user tablosunda kullanıcıya verilen hakları geri alamaz ama belirli bir veritabanına ait olmak üzere yeni haklar verebilir. Burada host alanı user tablosunda verilen host aralığını daraltabilir. Yani bir kullanıcı user tablosundaki host aralığının kapsadığı bir host’tan sunucu bağlantısı kursa da, db tablosunda belirli bir veritabanına kullanıcının bu hosttan erişimine ilişkin bir satır (kayıt) yoksa veritabanına erişemez. Burada host alanı için için tipik olarak ‘%’ kullanılabilir. Böylece sunucu bağlantısı sağlayabilen tüm hostlar veritabanına kabul edilirler.
  • host tablosu db tablosundaki ‘host’ alanına değer girilmezse anlam kazanır. Bu durumda ilgili veritabanına bağlanabilecek hostlar host tablosundan taranır ve erişim haklarına bakılır. Burada haklar açısından user ve db tabloları arasındaki ilişkiden farklı br durum vardır. Öyle ki burada db ve host tabloları arasında adeta bir AND işlemi yapılır.
  • table-priv tablosu tablo düzeyinde erişim haklarını belirler. (Sadece grant, revoke komutları ile değiştirilmeli)
  • column-priv tablosu tablo kolonları düzeyinde erişim haklarını belirler. (Sadece grant, revoke komutları ile değiştirilmeli)

Bu tablolarda kullanıcının bir erişim hakkı varsa daha alt düzey tablolara bakılmaz. Yapılan değişiklikleri etkinleştirmek için flush privileges komutu kullanılır.

c:\xampp\mysql\bin\mysqladmin flush-privileges

Veri işleme komutları ile mysql veritabanı üzerinde değişiklik yaparak “kullanıcı hakları” değiştirilebileceği gibi, daha emniyetli metod olarak grant ve revoke komutları kullanılabilir.

GRANT priv_type [(column_list)] [, priv_type [(column_list)] …]

ON {tbl_name | * | *.* | db_name.*}

TO user_name [IDENTIFIED BY [PASSWORD] ‘password’] [, user_name [IDENTIFIED BY ‘password’] …] [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR # |

MAX_UPDATES_PER_HOUR # |

MAX_CONNECTIONS_PER_HOUR #]]

priv_type seçenekleri   Açıklama
ALL [PRIVILEGES] Tüm haklar verilir.
ALTER ALTER TABLE komutu kullanma hakkı
CREATE CREATE TABLE komutu kullanma hakkı
DELETE DELETE komutu kullanma hakkı
DROP DROP TABLE komutu kullanma hakkı
FILE SELECT … INTO OUTFILE ve LOAD DATA INFILE.
INDEX CREATE INDEX and DROP INDEX
INSERT INSERT
SELECT SELECT sorgu komutu
RELOAD Allows usage of FLUSH
REPLICATION CLIENT Gives the right to the user to ask where the slaves/masters are.
REPLICATION SLAVE Needed for the replication slaves (to read binlogs from master).
SHOW DATABASES SHOW DATABASES komutu kullanma
UPDATE UPDATE komutu kullanma

Bu “priv_type”  seçenekleri seçilerek haklar verilebilir.

Kullanıcı Oluşturma ve Hak verme

Kullanıcıların erişim hakları mysql komut satırında SQL komutlarıyla mysql veritabanındaki user, db, host, table-priv ve column-priv tablolarına girilebileceği gibi bu işi otomatik olarak yapan GRANT komutunu kullanmak daha doğru olacaktır.

Örnek

MariaDB [obs]>GRANT ALL PRIVILEGES ON *.* TO berfin@localhost IDENTIFIED BY 'berfin1' ;

 “berfin” kullanıcısı,”localhost” bilgisayardan, “berfin1” sifresiyle tüm haklara sahip olarak oluşturulur. Sadece user tablosunda oluşturulur.

Örnek

MariaDB [obs]>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
               ON personel.*
               TO sena@localhost
               IDENTIFIED BY 'sena1';

sena kullanıcısı, “localhost” bilgisayardan, personel veritabanının tum alanlarında “SELECT,INSERT,UPDATE,DELETE,CREATE,DROP” haklarına “sena1” şifresiyle erişecek şekilde oluşturulur. User tablosu ve db tablosunda yetkiler oluşturulur.

Kullanıcı Haklarını Silme

MariaDB [obs]>REVOKE ALL PRIVILEGES ON personel.* FROM sena@localhost;

sena kullanıcısının, “localhost” dan yapacağı bağlantılı, personel tablosundaki tüm haklarını iptal eder. Db tablosundan siler, user tablosunda kalır, fakat hiç bir tabloyu kullanamaz. User tablosundan da silmek için

MariaDB [obs]>Delete From user where user = "sena"

yazılır.

Sunucu Yönetimi, Kullanıcı Oluşturma ve Hakları

MySQL sunucu yönetimi, sunucu kurulduğu anda  mysql isminde veritabanı oluşur. Bu veritabanın da 5 adet tablo vardır, bu tablolar kullanıcı ve onların erişim haklarını denetlerler.

  • user tablosu kullanıcıların sunucuya hangi host makinadan hangi haklarla bağlanabileceğini belirler. Bu tabloda bulunan haklar kullanıcıya global olarak verilir ve verilen haklar istisnasız tüm veritabanları üzerinde etkili olur. Host alanı ise tam tersine bağlanabilecek tüm hostları içermelidir. Diğer tablolarda bunların dışında host alanı girilmesi anlam taşımayacaktır.
  • db tablosu kullanıcıların belirli bir veritabanına hangi haklarla erişebileceğini gösterir. Global olarak sahip olunmayan hakları verebilir, ancak global olarak sahip olunan hakları kaldıramaz. Yani user tablosunda kullanıcıya verilen hakları geri alamaz ama belirli bir veritabanına ait olmak üzere yeni haklar verebilir. Burada host alanı user tablosunda verilen host aralığını daraltabilir. Yani bir kullanıcı user tablosundaki host aralığının kapsadığı bir host’tan sunucu bağlantısı kursa da, db tablosunda belirli bir veritabanına kullanıcının bu hosttan erişimine ilişkin bir satır (kayıt) yoksa veritabanına erişemez. Burada host alanı için için tipik olarak ‘%’ kullanılabilir. Böylece sunucu bağlantısı sağlayabilen tüm hostlar veritabanına kabul edilirler.
  • host tablosu db tablosundaki ‘host’ alanına değer girilmezse anlam kazanır. Bu durumda ilgili veritabanına bağlanabilecek hostlar host tablosundan taranır ve erişim haklarına bakılır. Burada haklar açısından user ve db tabloları arasındaki ilişkiden farklı br durum vardır. Öyle ki burada db ve host tabloları arasında adeta bir AND işlemi yapılır.
  • table-priv tablosu tablo düzeyinde erişim haklarını belirler. (Sadece grant, revoke komutları ile değiştirilmeli)
  • column-priv tablosu tablo kolonları düzeyinde erişim haklarını belirler. (Sadece grant, revoke komutları ile değiştirilmeli)

Bu tablolarda kullanıcının bir erişim hakkı varsa daha alt düzey tablolara bakılmaz. Yapılan değişiklikleri etkinleştirmek için flush privileges komutu kullanılır.

c:\xampp\mysql\bin\mysqladmin flush-privileges

Veri işleme komutları ile mysql veritabanı üzerinde değişiklik yaparak “kullanıcı hakları” değiştirilebileceği gibi, daha emniyetli metod olarak grant ve revoke komutları kullanılabilir.

GRANT priv_type [(column_list)] [, priv_type [(column_list)] …]

ON {tbl_name | * | *.* | db_name.*}

TO user_name [IDENTIFIED BY [PASSWORD] ‘password’] [, user_name [IDENTIFIED BY ‘password’] …] [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR # |

MAX_UPDATES_PER_HOUR # |

MAX_CONNECTIONS_PER_HOUR #]]

priv_type seçenekleri   Açıklama
ALL [PRIVILEGES] Tüm haklar verilir.
ALTER ALTER TABLE komutu kullanma hakkı
CREATE CREATE TABLE komutu kullanma hakkı
DELETE DELETE komutu kullanma hakkı
DROP DROP TABLE komutu kullanma hakkı
FILE SELECT … INTO OUTFILE ve LOAD DATA INFILE.
INDEX CREATE INDEX and DROP INDEX
INSERT INSERT
SELECT SELECT sorgu komutu
RELOAD Allows usage of FLUSH
REPLICATION CLIENT Gives the right to the user to ask where the slaves/masters are.
REPLICATION SLAVE Needed for the replication slaves (to read binlogs from master).
SHOW DATABASES SHOW DATABASES komutu kullanma
UPDATE UPDATE komutu kullanma

Bu “priv_type”  seçenekleri seçilerek haklar verilebilir.

Kullanıcı Oluşturma ve Hak verme

Kullanıcıların erişim hakları mysql komut satırında SQL komutlarıyla mysql veritabanındaki user, db, host, table-priv ve column-priv tablolarına girilebileceği gibi bu işi otomatik olarak yapan GRANT komutunu kullanmak daha doğru olacaktır.

Örnek

MariaDB [obs]>GRANT ALL PRIVILEGES ON *.* TO berfin@localhost IDENTIFIED BY 'berfin1' ;

 “berfin” kullanıcısı,”localhost” bilgisayardan, “berfin1” sifresiyle tüm haklara sahip olarak oluşturulur. Sadece user tablosunda oluşturulur.

Örnek

MariaDB [obs]>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
               ON personel.*
               TO sena@localhost
               IDENTIFIED BY 'sena1';

sena kullanıcısı, “localhost” bilgisayardan, personel veritabanının tum alanlarında “SELECT,INSERT,UPDATE,DELETE,CREATE,DROP” haklarına “sena1” şifresiyle erişecek şekilde oluşturulur. User tablosu ve db tablosunda yetkiler oluşturulur.

Kullanıcı Haklarını Silme

MariaDB [obs]>REVOKE ALL PRIVILEGES ON personel.* FROM sena@localhost;

sena kullanıcısının, “localhost” dan yapacağı bağlantılı, personel tablosundaki tüm haklarını iptal eder. Db tablosundan siler, user tablosunda kalır, fakat hiç bir tabloyu kullanamaz. User tablosundan da silmek için

MariaDB [obs]>Delete From user where user = "sena"

yazılır.