MySQL 8.0 Kurulumu ve Güvenli Yapılandırma: Ubuntu ve AlmaLinux
MySQL 8.0 kurulum ve güvenli yapılandırma rehberi: Ubuntu ve AlmaLinux üzerinde kurulum, kullanıcı yönetimi, uzak bağlantı ve my.cnf.
MySQL Nedir?
MySQL, Oracle Corporation tarafından geliştirilen dünyada en yaygın kullanılan açık kaynaklı ilişkisel veritabanı yönetim sistemidir (RDBMS). 1995 yılında Michael Widenius ve David Axmark tarafından başlatılan proje, bugün internet altyapısının temel taşlarından biri haline gelmiştir. Facebook, Twitter, YouTube, Wikipedia ve WordPress gibi dev platformlar MySQL'i tercih etmektedir.
MySQL 8.0, 2018'de GA olarak yayımlanmış ve 5.7 sürümüne kıyasla ciddi iyileştirmeler getirmiştir. JSON veri tipi, pencere fonksiyonları (window functions), ortak tablo ifadeleri (CTE), gelişmiş UTF-8 desteği (utf8mb4 varsayılan), rol tabanlı erişim denetimi ve atomik DDL işlemleri MySQL 8.0 ile gelen başlıca yenilikler arasındadır. Ayrıca sorgu optimizasyon motoru yeniden yazılmış ve performans önemli ölçüde artırılmıştır.
MySQL, InnoDB depolama motoru üzerinde ACID uyumlu işlemler, yabancı anahtar kısıtlamaları, tam metin arama, replikasyon ve cluster gibi kurumsal özellikleri destekler. Topluluk (Community) sürümü GPL lisansıyla ücretsizdir; ticari destek gerektiren kurumlar için Enterprise sürümü mevcuttur.
Temel Özellikler
- InnoDB Depolama Motoru: ACID uyumlu, satır düzeyinde kilitleme ve yabancı anahtar desteği.
- Yüksek Performans: Gelişmiş sorgu optimizatörü ve indeks kullanımı.
- Replikasyon: Master-slave, GTID tabanlı ve Grup replikasyonu.
- JSON Desteği: Yarı yapılandırılmış veri depolama ve sorgulama.
- Tam Metin Arama: InnoDB ile FULLTEXT indeks desteği.
- Rol Tabanlı Erişim: Kullanıcı rollerini merkezi yönetim.
- Şifreleme: Veri-in-transit (TLS) ve veri-at-rest şifreleme.
Sistem Gereksinimleri
- CPU: 64-bit mimarisi zorunlu
- RAM: 1 GB minimum (üretim için 4 GB+ önerilir)
- Disk: 5 GB minimum (veriler için ek alan gerekli)
İşletim Sistemine Göre Kurulum
🟠 Ubuntu 22.04 Üzerinde MySQL 8.0 Kurulumu
1. Sistemi Güncelleyin
sudo apt update && sudo apt upgrade -y
2. MySQL Server'ı Kurun
sudo apt install mysql-server -y
3. MySQL Servisini Başlatın
sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl status mysql
4. Sürümü Doğrulayın
mysql --version
🔵 AlmaLinux 9 Üzerinde MySQL 8.0 Kurulumu
1. MySQL Resmi Deposunu Ekleyin
sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
2. GPG Anahtarını İçe Aktarın
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
3. MySQL 8.0'ı Kurun
sudo dnf install -y mysql-community-server
4. Servisi Başlatın ve Aktifleştirin
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo systemctl status mysqld
5. Geçici Parolayı Bulun
sudo grep 'temporary password' /var/log/mysqld.log
Güvenli Yapılandırma: mysql_secure_installation
Ubuntu 22.04 İçin
sudo mysql_secure_installation
Sihirbaz şu adımları tamamlar:
- VALIDATE PASSWORD bileşenini aktifleştirme (önerilir)
- Root parolası belirleme
- Anonim kullanıcıları kaldırma
- Root'un uzak bağlantısını kısıtlama
- Test veritabanını kaldırma
- Yetki tablolarını yenileme
AlmaLinux İçin
mysql -u root -p # Geçici parolayla giriş yapın
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YeniGucluParola123!';
FLUSH PRIVILEGES;
sudo mysql_secure_installation
Kullanıcı ve Veritabanı Yönetimi
Yeni Veritabanı ve Kullanıcı Oluşturma
-- Veritabanı oluştur
CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Kullanıcı oluştur (yalnızca localhost erişimi)
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'GucluParola123!';
GRANT ALL PRIVILEGES ON myapp.* TO 'myuser'@'localhost';
-- Uzak erişim için (belirli IP'den)
CREATE USER 'myuser'@'10.0.0.5' IDENTIFIED BY 'GucluParola123!';
GRANT ALL PRIVILEGES ON myapp.* TO 'myuser'@'10.0.0.5';
FLUSH PRIVILEGES;
-- Kullanıcı yetkilerini görüntüle
SHOW GRANTS FOR 'myuser'@'localhost';
Uzak Bağlantıyı Aktifleştirme
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address satırını düzenleyin:
bind-address = 0.0.0.0
sudo systemctl restart mysql
# UFW'de portu açın (Ubuntu)
sudo ufw allow from 10.0.0.5 to any port 3306
# firewalld ile (AlmaLinux)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.5" port protocol="tcp" port="3306" accept'
sudo firewall-cmd --reload
my.cnf Temel Performans Optimizasyonu
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
# InnoDB yapılandırması
innodb_buffer_pool_size = 1G # RAM'in %50-70'i
innodb_buffer_pool_instances = 2
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2 # Performans/güvenlik dengesi
innodb_flush_method = O_DIRECT
# Bağlantı ayarları
max_connections = 150
wait_timeout = 600
interactive_timeout = 600
# Sorgu önbelleği (MySQL 8.0'da kaldırıldı)
# Bunun yerine ProxySQL veya uygulama seviyesi önbellekleme kullanın
# Log ayarları
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
sudo systemctl restart mysql
Sık Karşılaşılan Sorunlar
- Access denied for user 'root'@'localhost': Ubuntu'da
sudo mysqlile auth_socket eklentisi kullanılır. Parola ile giriş için:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'parola'; - MySQL başlamıyor:
sudo journalctl -xe -u mysqlile hata logunu inceleyin. - Disk alanı doldu:
du -sh /var/lib/mysql/*ile büyük tabloları bulun ve binary logları temizleyin. - Too many connections:
max_connectionsdeğerini artırın veya bağlantı havuzu kullanın.
İlgili Makaleler
Yorumlar
Henüz yorum yok. İlk yorumu siz yapın!