MySQL sistemlerinde birden fazla kullanıcıyla çalışılıyorsa, her biri için ayrı kullanıcı hesapları tanımlamak gerekir. Bu uygulama, erişim yönetimini kolaylaştırırken güvenlik standartlarını da korur.
Yeni Kullanıcı Oluşturma
Yeni bir kullanıcı tanımlamak için root hesabıyla MySQL’e bağlanmak gerekir. Root hesabı, sistem üzerindeki tüm işlemleri yönetme yetkisine sahip kullanıcıdır.
mysql -u root -p
Bu komutu yazdığınızda sistem sizden root şifresini ister. Parola onaylandıktan sonra MySQL komut satırına erişilir ve kullanıcı oluşturma adımları uygulanabilir.

Yeni bir kullanıcı eklemek için aşağıdaki SQL ifadesi kullanılabilir.
CREATE USER 'kullanici_adi'@'localhost' IDENTIFIED BY 'guclu_sifre';
Komutta geçen kullanici_adi, oluşturulacak kullanıcı adını belirtir.
localhost ifadesi, erişimin sadece yerel ağ üzerinden yapılabileceğini gösterir.
guclu_sifre, kullanıcının güvenli bir parola ile tanımlanmasını sağlar.
Eğer bu kullanıcıya uzaktan erişim yetkisi vermek istiyorsak şu komutu girmeliyiz:
CREATE USER 'kullanici_adi'@'%' IDENTIFIED BY 'guclu_sifre';
MySQL sistemlerinde gerçekleştirilen kullanıcı oluşturma işlemleri, MariaDB için de aynı biçimde geçerlidir.
Mysql Kullanıcısına Yetki Vermek
Yeni kullanıcı oluşturulduktan sonra bu kullanıcıya hangi veritabanına erişeceğini ve hangi işlemleri yapabileceğini belirtmek gerekir.
Örneğin belirli bir veritabanına tam erişim yetkisi vermek için.
GRANT ALL PRIVILEGES ON veritabani_adi.* TO 'kullanici_adi'@'localhost';
Sadece okuma (SELECT) yetkisi vermek istiyorsak.
GRANT SELECT ON veritabani_adi.* TO 'kullanici_adi'@'localhost';
Yetkilendirme işlemlerinin etkin olması için şu komut mutlaka çalıştırılmalıdır.
FLUSH PRIVILEGES;
| Ayrıcalık | Eylem |
|---|---|
| ALL PRIVILEGES | Kullanıcıya veritabanı üzerinde tam erişim yetkisi verir. |
| INSERT | Tablolara yeni satırlar ekleyelim. |
| DELETE | Tablolardaki satırları silelim. |
| CREATE | Yeni tablolar veya veritabanları oluşturalım. |
| DROP | Tabloları ya da veritabanlarını tamamen kaldıralım. |
| SELECT | Tablolardaki verileri görüntüleyelim. |
| UPDATE | Tablolarda yer alan satırları güncelleyelim. |
| GRANT OPTION | Kullanıcıya diğer kullanıcılara da yetki verme izni tanımlayalım (genellikle root hesabı için ayrılır). |
MySQL Yetki Görüntüleme Komutu
MySQL üzerinde bir kullanıcının yetkilerini görüntülemek için şu komutu çalıştırmak yeterlidir:
SHOW GRANTS FOR 'kullanici_adi'@'localhost';
Komutun çıktısı, kullanıcının sahip olduğu tüm erişim izinlerini listeler. Bu sayede, kullanıcıya hangi veritabanları ve işlemler için yetki verildiğini açık şekilde görebiliriz.
Yetkileri Geri Alma veya Kullanıcıyı Silme
Bir kullanıcının belirli bir veritabanına ait tüm yetkilerini kaldırmak için şu SQL komutu kullanılabilir:
REVOKE ALL PRIVILEGES ON veritabani_adi.* FROM 'kullanici_adi'@'localhost';
Bu komut, kullanıcının belirtilen veritabanı üzerindeki tüm erişim haklarını iptal eder. Kullanıcı sistemde kalır, ancak artık o veritabanında işlem yapamaz.
Kullanıcıyı sistemden tamamen silmek için aşağıdaki komutu çalıştırabiliriz:
DROP USER 'kullanici_adi'@'localhost';
Bu işlem, kullanıcı hesabını tamamen kaldırır. Silinen kullanıcıyla bağlantı kurmak mümkün değildir ve tüm yetkiler otomatik olarak temizlenir.
Eğer veritabanınızı SQLite ortamından MySQL’e taşıdıysanız, bu kullanıcı izinlerini yeniden tanımlamak güvenli ve kesintisiz bir geçiş için gereklidir.
Sıkça Sorulan Sorular
MySQL kullanıcı yetkilerini nasıl sıfırlayabilirim?
Yetkileri sıfırlamak için aşağıdaki komutu kullanabilirsiniz.
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'kullanici_adi'@'localhost';
Bu komut, kullanıcının tüm erişim izinlerini kaldırır ve MySQL’de yeniden tanımlama yapmanızı sağlar.
Yeni kullanıcı uzak bağlantı yapamıyor, neden?
MySQL yapılandırma dosyasında bind-address parametresi muhtemelen 127.0.0.1 olarak ayarlıdır. Bu değeri 0.0.0.0 olarak değiştirip MySQL servisini yeniden başlatarak tüm IP adreslerinden bağlantıya izin verebilirsiniz.
Bir kullanıcıyı hem yerel hem uzaktan erişim için tanımlayabilir miyim?
Bunun için aynı kullanıcı adıyla iki farklı hesap oluşturabilirsiniz:
biri localhost, diğeri % üzerinden tanımlanmalıdır. Böylece kullanıcı hem yerelden hem de uzaktan bağlanabilir.
FLUSH PRIVILEGES komutunu neden çalıştırmam gerekiyor?
Bu komut, yapılan yetki değişikliklerinin MySQL tarafından hemen uygulanmasını sağlar.
Aksi halde değişiklikler, MySQL servisi yeniden başlatılana kadar geçerli olmayabilir.
Kullanıcı oluştururken hata alıyorum, ne yapmalıyım?
Access denied hatası genellikle root yetkisi olmadan işlem yapmaya çalışıldığında görülür.
Root hesabı ile oturum açtığınızdan ve CREATE USER izninizin tanımlı olduğundan emin olunmalı.