MySQL üzerinde birden fazla kullanıcı çalışıyorsa, her biri için ayrı hesaplar oluşturmak ve uygun yetkiler tanımlamak gerekir. Bu sayede hem erişim kontrolü sağlanır hem de veritabanı güvenliği artırılır.
Yeni Kullanıcı Oluşturma
Yeni bir kullanıcı oluşturmak için önce root hesabıyla MySQL’e giriş yapmalıyız. Root hesabı, sistemde en geniş yetkilere sahip kullanıcıdır.
mysql -u root -p
Bu komutu girdikten sonra sistem sizden root şifresini ister. Şifreyi yazdığınızda MySQL komut satırına erişim sağlanır.

Aşağıdaki komutu kullanarak yeni bir kullanıcı ekleyebiliriz.
CREATE USER 'kullanici_adi'@'localhost' IDENTIFIED BY 'guclu_sifre';
- kullanici_adi oluşturmak istediğimiz kullanıcı adını belirtir.
- localhost, bu kullanıcının yalnızca yerel bağlantı üzerinden erişim sağlayabileceğini gösterir.
- guclu_sifre ise kullanıcı için belirleyeceğimiz güçlü paroladır.
Eğer kullanıcıya uzak bağlantı izni vermek istiyorsak şu komutu kullanalım.
CREATE USER 'kullanici_adi'@'%' IDENTIFIED BY 'guclu_sifre';
MySQL üzerinde kullanıcı oluşturma ve yetkilendirme işlemleri, MariaDB’de de benzer şekilde çalışır. Ancak iki sistem arasında bazı komut farkları bulunur.
İlgili yazımıza göz atabilirisiniz. MySQL ve MariaDB Farkları
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). |
Kullanıcı Yetkilerini Görüntüleme
Bir kullanıcıya tanımlı yetkileri görmek için aşağıdaki komutu çalıştıralım.
SHOW GRANTS FOR 'kullanici_adi'@'localhost';
Bu komut, belirtilen kullanıcının sahip olduğu tüm izinleri detaylı şekilde listeler. Böylece hangi veritabanlarına erişimi olduğunu, hangi işlemleri yapabileceğini net bir biçimde görebiliriz.
Yetkileri Geri Alma veya Kullanıcıyı Silme
Eğer bir kullanıcının belirli bir veritabanı üzerindeki yetkilerini kaldırmak istiyorsak şu komutu kullanalım.
REVOKE ALL PRIVILEGES ON veritabani_adi.* FROM 'kullanici_adi'@'localhost';
Bu komut, ilgili kullanıcının belirtilen veritabanı üzerindeki tüm izinlerini iptal eder. Kullanıcı hesabı sistemde kalır ancak artık o veritabanına erişemez.
Kullanıcıyı tamamen silmek istiyorsak şu komutu çalıştıralım.
DROP USER 'kullanici_adi'@'localhost';
Bu işlem, kullanıcının MySQL sisteminden tamamen kaldırılmasını sağlar. Silme işlemi sonrası bu kullanıcıyla bağlantı kurulamaz ve tanımlı tüm yetkiler otomatik olarak silinir.
Eğer veritabanınızı farklı bir sistemden MySQL’e taşıdıysanız, kullanıcı izinlerinin yeniden yapılandırılması kritik öneme sahiptir.
——-> SQLite’ten MySQL’e Taşıma
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ı.
