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.