Skip to main content

🧩 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:

  1. Paket yöneticisini güncelle ve MySQL sunucusunu kur.
  2. Root hesabının kimlik doğrulamasını düzenle.
  3. mysql_secure_installation betiğiyle güvenlik ayarlarını yap.
  4. Yeni kullanıcı oluştur ve yetkilendir.
  5. Servis durumunu kontrol et.
  6. 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ı seviyesiSTRONG (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:

İşlemKomut
Servisi başlatsudo systemctl start mysql
Servisi durdursudo systemctl stop mysql
Servisi yeniden başlatsudo systemctl restart mysql
Servis durumunu görüntülesudo systemctl status mysql
Otomatik başlatmayı etkinleştirsudo 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)

  1. $auth_socket$ eklentisi nedir?

auth_socket, sistem kullanıcı hesabıyla kimlik doğrulaması yapar. Parola gerekmez ama uzak erişime izin vermez.

  1. $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.

  1. 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!';
  1. 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).

  1. 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

HataSebepÇözüm
Unknown databaseHedef veritabanı yokCREATE DATABASE komutu kullanın
Access denied for userYanlış parola veya yetkiALTER USER ile yeni parola oluşturun
Table already existsAynı tablo mevcut--add-drop-table parametresiyle export alın
Bozuk Türkçe karakterlerCharset uyumsuzluğu--default-character-set=utf8mb4 ekleyin
Eksik yetki hatasıKullanıcı izni yetersizRoot 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.