MySQL Kullanıcı Oluşturma ve Yetki Verme Rehberi
MySQL Kullanıcı Oluşturma ve Yetki Verme Rehberi
Veritabanı güvenliğinin en önemli kurallarından biri, her işlem için root kullanıcısı yerine gereksiz yetkilere sahip olmayan yeni kullanıcılar oluşturmaktır. Bu rehberde, MySQL üzerinde güvenli bir kullanıcı oluşturma ve bu kullanıcılara yetki verme sürecini adım adım öğreneceksiniz.
Bu Rehberde Ne Öğreneceksiniz?
- MySQL "root" hesabı yerine güvenli kullanıcılar oluşturmayı.
- Farklı kimlik doğrulama yöntemlerini (plugin) seçmeyi.
- Veritabanı ve tablo bazlı yetkilendirme yapmayı.
1. Adım: MySQL Komut Satırına Giriş
MySQL’e giriş yapmak için, Ubuntu sistemlerde genellikle auth_socket eklentisi kullanılır. Bu, sistem kullanıcısının adıyla veritabanı kullanıcısının adını eşleştirir. Giriş yapmak için aşağıdaki komutu kullanabilirsiniz:
sudo mysql
- Eğer root hesabınıza şifre atamışsanız, şu komutla erişebilirsiniz:
mysql -u root -p
- Bu komut, şifrenizi girmenizi isteyecektir.
2. Adım: Yeni Kullanıcı Oluşturma
Yeni bir kullanıcı oluştururken, hangi makineden bağlanacağını belirtmek gerekir. Eğer sadece sunucu içinden erişim sağlanacaksa, localhost kullanılabilir. Örnek bir kullanıcı oluşturma komutu:
CREATE USER 'rabisu_user'@'localhost' IDENTIFIED BY 'guclu_sifre_buraya';
Not: Eğer PHP gibi uygulamalarla uyumlu bir bağlantı sağlamak isterseniz, mysql_native_password kimlik doğrulama yöntemini kullanabilirsiniz:
CREATE USER 'rabisu_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'guclu_sifre_buraya';
3. Adım: Kullanıcıya Yetki Verme
Yeni oluşturduğumuz kullanıcıya belirli yetkiler vermek için GRANT komutunu kullanırız. Aşağıdaki komut, rabisu_user kullanıcısına yalnızca belirli işlemleri yapma yetkisi verir:
GRANT SELECT, INSERT, UPDATE ON veritabani_adi.* TO 'rabisu_user'@'localhost';
- Eğer kullanıcıya tam yetki vermek isterseniz, bu komutu kullanabilirsiniz (Ancak bu önerilmez):
GRANT ALL PRIVILEGES ON *.* TO 'rabisu_user'@'localhost' WITH GRANT OPTION;
- Bu komut, kullanıcıya tüm veritabanlarında ve tablolarda tam yetki sağlar.
4. Adım: Yetkileri Kontrol Etme ve Geri Alma
- Bir kullanıcının sahip olduğu yetkileri görmek için şu komutu kullanabilirsiniz:
SHOW GRANTS FOR 'rabisu_user'@'localhost';
- Eğer bir yetkiyi geri almak isterseniz, REVOKE komutunu kullanabilirsiniz:
REVOKE INSERT ON veritabani_adi.* FROM 'rabisu_user'@'localhost';
- Bir kullanıcıyı tamamen silmek için:
DROP USER 'rabisu_user'@'localhost';
Sıkça Sorulan Sorular (SSS)
1. Access denied for user" hatası alıyorum, ne yapmalıyım?
- Kullanıcı adı, şifre veya host bilgisini kontrol edin. localhost ile % farklıdır; ayrıca doğru veritabanı erişim haklarının verildiğinden emin olun.
2. Kullanıcıya uzaktan erişim (Remote Access) nasıl verilir?
Kullanıcıyı oluştururken localhost yerine % işareti kullanın ve sunucunun güvenlik duvarı (UFW) üzerinden 3306 portunu dışarı açın.
3. FLUSH PRIVILEGES komutu ne zaman gereklidir?
GRANT veya REVOKE komutları sonrası yetkiler otomatik olarak güncellenir. Ancak, manuel değişiklikler yapıyorsanız, FLUSH PRIVILEGES komutunu çalıştırmanız gerekebilir.
4. MySQL'de kullanıcı şifresini nasıl değiştiririm?
- Şifreyi değiştirmek için şu komutu kullanabilirsiniz:
ALTER USER 'kullanici_adi'@'localhost' IDENTIFIED BY 'yeni_sifre';
5. Kullanıcı yetkilerini nasıl kaldırabilirim?
- Kullanıcıya tanımlı tüm yetkileri kaldırmak için şu komutu kullanabilirsiniz:
REVOKE ALL PRIVILEGES ON *.* FROM 'kullanici_adi'@'localhost';
Sonuç
MySQL üzerinde yeni kullanıcı oluşturma, şifre atama ve veritabanı yetkilerini yönetme adımlarını içeren pratik, adım adım Türkçe rehber.
Veritabanı yönetimini profesyonel bir altyapıda denemek için projelerinizi Rabisu Bulut platformunda hemen deneyebilirsiniz.