🧩 Ubuntu Sunucularda MySQL Kurulumu ve Güvenli İlk Yapılandırma
💡 Bu Rehberde Ne Öğreneceksiniz?
Bu kılavuzda Ubuntu (22.04 LTS ve üzeri) sistemlerde MySQL veritabanı sunucusunu sıfırdan kurmayı, root şifresini güvenli şekilde yapılandırmayı ve günlük kullanım için özel kullanıcı hesabı oluşturmayı öğreneceksiniz.
Ayrıca MySQL servisini yönetmeyi, güvenli ağ erişimi için UFW ayarlarını düzenlemeyi ve olası bağlantı sorunlarını çözmeyi de adım adım göreceksiniz.
🚀 Bu rehber tamamlandığında, üretim ortamına hazır, güvenli bir MySQL sunucusuna sahip olacaksınız.
🧠 Aşama 1 – İçeriği Analiz Et (Anlama)
Ana Teknik Konu:
Ubuntu Linux üzerinde MySQL kurulumunun yapılması ve güvenli ilk yapılandırmanın uygulanması.
Çözdüğü Problem:
Yeni kurulan Ubuntu sistemlerinde MySQL root hesabı varsayılan olarak auth_socket eklentisiyle çalışır. Bu da parolasız bağlantı sorunları yaratır. Rehber, bu problemi güvenli biçimde çözmeyi ve üretim ortamına hazır hale getirmeyi amaçlar.
Adımlar:
- Paket yöneticisini güncelle ve MySQL sunucusunu kur.
- Root hesabının kimlik doğrulamasını düzenle.
mysql_secure_installationbetiğiyle güvenlik ayarlarını yap.- Yeni kullanıcı oluştur ve yetkilendir.
- Servis durumunu kontrol et.
- UFW güvenlik duvarı ile erişim kurallarını belirle.
⚙️ 1. MySQL Kurulumu
Ubuntu’nun resmi depolarından MySQL 8 sürümünü kurmak için aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt install mysql-server -y
Kurulum tamamlandıktan sonra servisin durumunu kontrol edin:
sudo systemctl status mysql
💡 Servis durumu “active (running)” görünüyorsa MySQL başarıyla kurulmuştur. Eğer değilse, servisi el ile başlatabilirsiniz:
sudo systemctl start mysql
🔐 2. Güvenli İlk Yapılandırma
Yeni kurulumlarda root hesabı parola istemez. Bu, mysql_secure_installation betiğinin hata vermesine neden olabilir. Bu yüzden önce kimlik doğrulama yöntemini değiştirin.
2.1 Root Kimlik Doğrulamasını Değiştirme
sudo mysql
MySQL kabuğunda şu komutu çalıştırın:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'GucluBirParola!';
Sonra çıkın:
exit
2.2 Güvenlik Betiğini Çalıştırma
sudo mysql_secure_installation
Aşağıdaki adımlarda önerilen yanıtları verin:
| Soru | Önerilen Yanıt |
|---|---|
| VALIDATE PASSWORD component kullanılsın mı? | Y |
| Parola politikası seviyesi | STRONG (2) |
| Anonim kullanıcılar kaldırılsın mı? | Y |
| Root’un uzaktan erişimi kapatılsın mı? | Y |
| Test veritabanı kaldırılsın mı? | Y |
🔒 Bu adımlar MySQL’i üretim ortamı için güvenli hale getirir.
2.3 Root’u Yeniden auth_socket’a Döndürme (İsteğe Bağlı)
Eğer MySQL’e sadece sudo mysql komutuyla erişmek istiyorsanız:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
exit
👥 3. Yeni MySQL Kullanıcısı Oluşturma
Root hesabını günlük işlerde kullanmak güvenli değildir. Yeni bir kullanıcı oluşturmak için:
sudo mysql
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'CokGucluBirParola!';
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'appuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;
💡 Bu kullanıcı artık root yetkisine sahip olmadan veritabanına erişebilir. Bağlantı testi için:
mysql -u appuser -p
🧱 4. Servis Yönetimi Komutları
MySQL, systemd üzerinden yönetilir. Sık kullanılan servis komutları aşağıdadır:
| İşlem | Komut |
|---|---|
| Servisi başlat | sudo systemctl start mysql |
| Servisi durdur | sudo systemctl stop mysql |
| Servisi yeniden başlat | sudo systemctl restart mysql |
| Servis durumunu görüntüle | sudo systemctl status mysql |
| Otomatik başlatmayı etkinleştir | sudo systemctl enable mysql |
🚀 enable komutu sayesinde MySQL, sistem her yeniden başlatıldığında otomatik olarak açılır.
🔥 5. Güvenlik Duvarı (UFW) Ayarları
MySQL varsayılan olarak yalnızca localhost (127.0.0.1) üzerinden bağlantıya izin verir. Uzak erişim gerekiyorsa, yalnızca güvenilir IP’leri belirtin.
sudo ufw allow from 192.168.1.10 to any port 3306
Durumu kontrol edin:
sudo ufw status
⚠️ sudo ufw allow 3306 komutunu ASLA doğrudan kullanmayın. Bu, MySQL’i internete açık hale getirir ve büyük güvenlik riski oluşturur.
🧰 6. Kurulum Testi
Kurulumun başarılı olduğunu test etmek için:
mysqladmin -u appuser -p version
Ve basit bir veritabanı oluşturun:
mysql -u appuser -p -e "CREATE DATABASE testdb; SHOW DATABASES;"
Eğer testdb listede görünüyorsa MySQL düzgün şekilde çalışıyor demektir.
💬 Sıkça Sorulan Sorular (SSS)
- $auth_socket$ eklentisi nedir?
auth_socket, sistem kullanıcı hesabıyla kimlik doğrulaması yapar. Parola gerekmez ama uzak erişime izin vermez.
- $mysql_secure_installation$ neden gereklidir?
Bu betik, zayıf parolaları reddeder, anonim kullanıcıları siler ve root’un uzaktan erişimini kapatarak MySQL’i güvenli hale getirir.
- PHP veya uygulamam MySQL’e bağlanamıyor, neden?
Bazı PHP sürümleri caching_sha2_password desteği içermez. Aşağıdaki komutla kullanıcı eklentisini değiştirin:
ALTER USER 'appuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Parola!';
- MySQL açılmıyor, ne yapmalıyım?
Durumu kontrol edin:
sudo systemctl status mysql
sudo journalctl -xe
Bu loglar hatanın nedenini gösterir (örneğin port çakışması veya eksik izinler).
- UFW ile uzak bağlantı nasıl test edilir?
İzin verdiğiniz IP’den şu komutla test edebilirsiniz:
mysql -h <sunucu_ip_adresi> -u appuser -p
⚠️ Yaygın Hatalar ve Çözümleri
| Hata | Sebep | Çözüm |
|---|---|---|
| Unknown database | Hedef veritabanı yok | CREATE DATABASE komutu kullanın |
| Access denied for user | Yanlış parola veya yetki | ALTER USER ile yeni parola oluşturun |
| Table already exists | Aynı tablo mevcut | --add-drop-table parametresiyle export alın |
| Bozuk Türkçe karakterler | Charset uyumsuzluğu | --default-character-set=utf8mb4 ekleyin |
| Eksik yetki hatası | Kullanıcı izni yetersiz | Root veya tam yetkili kullanıcıyla çalışın |
🧭 Sonuç
Bu rehberde, Ubuntu üzerinde MySQL 8 kurulumu, root şifre yapılandırması, kullanıcı yönetimi, servis kontrolü ve UFW güvenliği konularını tamamladınız. Artık sisteminiz hem güvenli hem üretime hazır durumda.
☁️ Tüm bu işlemleri Rabisu Bulut Platformu üzerinden tek tıkla gerçekleştirerek MySQL kurulumunu otomatikleştirebilir, güvenliğinizi bir üst seviyeye taşıyabilirsiniz.