mysql kullanıcı oluşturma etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
mysql kullanıcı oluşturma etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

MySQL’de Yeni Kullanıcı Oluşturma

?
1
CREATE USER 'korsan';
Yukarıdaki gibi şifre belirtmeden bir kullanıcı oluşturursanız, herhangi biri ‘korsan’ kullanıcısı üzerinden şifre belirtmeksizin MySQL’e erişebilir durumda olacaktır.
Bu kullanıcıya henüz herhangi bir veri tabanı üzerinde yetki verilmedi. Dolayısıyla MySQL’e bağlanmış olsa bile veri tabanları üzerinde işlem yapamayacaktır. Bu kullanıcıya şifre vermeyi unuttuktan sonra, bir veri tabanı üzerinde yetki verirseniz sonuçlar kötü olabilir.
MySQL’de oluşturacağınız kullanıcılar için host parametresi de verebilirsiniz. Bu ayar “kullanıcı nereden (hosttan) bağlanabilir” sorusunun cevabıdır.
  • Localhost: Sadece MySQL’in bulunduğu makineden erişilir.
  • %: Sadece dışarıdan erişilir.
  • IP: Sadece sizin belirlediğiniz IP’lerden erişilir.
Sadece MySQL’in bulunduğu makineden MySQL’e giriş yapabilen bir kullanıcı oluşturalım:
?
1
CREATE USER 'korsan'@'localhost' IDENTIFIED BY 'powerful_password';
Kullanıcıyı yukarıdaki gibi oluşturursanız Navicat, Workbench gibi programlar kullanarak MySQL’e dışardan erişemezsiniz. Sadece o makineden MySQL’e erişebilirsiniz.
Sadece dışarıdan MySQL’e erişebilen bir kullanıcı oluşturalım:
?
1
CREATE USER 'korsan'@'%' IDENTIFIED BY 'another_password';
Gördüğünüz üzere, kullanıcı adları aynı olan şifreleri farklı olan 2 farklı kullanıcı oluşturduk. Birisi “powerful_password” şifresi ile sadece içeriden, diğeri ise “another_password” şifresi ile sadecedışarıdan erişebilir durumdadır.

MySQL’de Kullanıcıları Listeleme

Oluşturduğunuz kullanıcıları şu sorgu ile görüntüleyebilirsiniz:
?
1
SELECT host, user FROM mysql.user;
Detaylı bilgi için burayı inceleyebilirsiniz.

MySQL’de Kullanıcı Silme

Oluşturduğunuz kullanıcıları silmek için 2 farklı yol kullanabilirsiniz:
?
1
DROP USER korsan;
Kullanıcıyı drop ederseniz sadece % ile oluşturulan kullanıcıyı silmiş olursunuz. Aşağıdaki gibi bir kullanım daha sağlıklı olacaktır.
?
1
2
DROP USER 'korsan'@'localhost';
DROP USER 'korsan'@'%';
DROP yerine DELETE’de kullanabilirsiniz. Lakin bu tavsiye edilen bir yol değil. Zaten bir kullanıcıyı DELETE edip tekrar aynı isimle yaratmaya çalıştığınızda hata oluşuyor.
?
1
2
3
4
DELETE FROM mysql.user WHERE user='korsan'
-- veya
DELETE FROM mysql.user WHERE user='korsan' AND host='localhost';
DELETE FROM mysql.user WHERE user='korsan' AND host='%';

MySQL’de Kullanıcı Yetkilendirme

Kullanıcı oluşturduktan sonra, hangi kullanıcınının hangi veri tabanı ve tablolar üzerinde hangi yetkileresahip olacaklarını belirlememiz gerekiyor.
Kullanıcı oluştururken yaptığımız gibi yine hosta göre yetkilendirme yapabiliyoruz.
?
1
GRANT ALL PRIVILEGES ON korsanDB.* TO 'korsan'@'localhost';
Yukarıdaki syntax ile “korsan” kullanıcısı “local makineden bağlanarak”, “korsanDB” veri tabanının tüm tablolarında (korsanDB.* ile ifade ediliyor) tüm işlemleri yapabilir.
?
1
GRANT SELECT, INSERT, UPDATE, DELETE ON korsanDB.users TO 'korsan'@'%';
Bu syntax ile “korsan” kullanıcısı “dışarıdaki bir makineden bağlanarak”, “korsanDB” veri tabanının tüm users tablosunda (korsanDB.users) sadece “SELECT, INSERT, UPDATE, DELETE” işlemlerini yapabilir.
Yetkilendirme işlemlerini yaparken kullanıcının şifresi yoksa aşağıdaki gibi şifre de oluşturabilirsiniz.
?
1
GRANT ALL PRIVILEGES ON korsanDB.* TO 'korsan'@'localhost' IDENTIFIED BY 'password';
Ayrıca, bir kullanıcıya atanmış tüm yetkileri görüntülemek için aşağıdaki syntaxı kullanabilirsiniz.
?
1
2
SHOW GRANTS FOR 'korsan'@'localhost';
SHOW GRANTS FOR 'korsan'@'%';

Sonuç – Özet

MySQL’de yeni bir kullanıcı oluştururken veya yetkilendirirken şifresini belirlemeyi unutmayınız. Hostlara göre farklı şifreler veriniz. Hostlara göre farklı yetkiler belirleyiniz. Bu ufak bir detay olarak görünür fakat veri tabanına erişmek isteyen kötü niyetli insanları caydırabilir.
Son olarak, en hızlı şekilde bir kullanıcı oluşturmak ve düzgün bir şekilde yetkilendirmek içinaşağıdaki syntax işinize yarayabilir.
?
1
2
CREATE USER 'korsan'@'%';
GRANT ALL PRIVILEGES ON korsanDB.* TO 'korsan'@'%' IDENTIFIED BY 'password';
Umarım yazdıklarım birilerine faydalı oluyordur, olmuştur.

MySQL için Kullanıcı Oluşturma ve Doğru Yetkilendirme