Kısa cevap: CentOS'ta MariaDB kurmak için sudo dnf -y install mariadb-server komutunu çalıştırın (CentOS 7'de yum). Ardından sudo systemctl enable --now mariadb ile servisi başlatın ve sudo mysql_secure_installation ile ilk güvenlik ayarlarını yapın. Daha yeni bir sürüm için resmî MariaDB deposunu kullanın.
MariaDB; MySQL uyumluluğu, yüksek performansı ve aktif topluluk desteğiyle yaygın kullanılan bir veritabanıdır. Aşağıdaki adımlarla CentOS 7 ile CentOS Stream 8/9 üzerinde MariaDB kurulumunu, ilk güvenlik ayarlarını, servis yönetimini ve uzaktan erişimi yapılandırabilirsiniz.
Önemli: CentOS Linux 7'nin desteği 30 Haziran 2024'te, CentOS Stream 8'in desteği 31 Mayıs 2024'te sona erdi. CentOS 7 paketleri vault.centos.org arşivine taşındığı için varsayılan depo ayarlarıyla yum komutları hata verebilir. Yeni kurulumlarda desteklenen bir sürümü (CentOS Stream 9'un desteğinin 2027'de bitmesi bekleniyor) ya da AlmaLinux, Rocky Linux gibi RHEL 8/9 uyumlu bir dağıtımı tercih etmeniz daha güvenli olur.
Ön koşullar
- Root ya da
sudoyetkisi. - Sunucunun saat ve
DNSayarlarının doğru olması (TLS ve depo erişimi için). - Uzaktan erişim gerekiyorsa güvenlik duvarında
TCP 3306portu.
1. Sistemi güncelleyin
# CentOS 7 sudo yum -y update # CentOS Stream 8/9 sudo dnf -y upgrade
2. MariaDB'yi kurun
Dağıtımın varsayılan depolarından kurulum en sorunsuz yöntemdir. Daha güncel bir sürüme ihtiyacınız varsa 11. adımdaki resmî depo bölümüne bakın.
# CentOS 7 sudo yum -y install mariadb-server # CentOS Stream 8/9 sudo dnf -y install mariadb-server
3. Servisi başlatın ve otomatik başlatmayı açın
sudo systemctl enable --now mariadb systemctl status mariadb journalctl -u mariadb -n 100 --no-pager
İlk komut servisi hem başlatır hem de sunucu açıldığında otomatik başlayacak şekilde ayarlar. Diğer ikisi servis durumunu ve son 100 günlük satırını gösterir.
4. İlk güvenlik ayarlarını yapın
Kurulumdan sonra temel güvenliği uygulayın. mysql_secure_installation, root parolası, anonim hesaplar ve test veritabanı gibi adımları yönetir.
sudo mysql_secure_installation
Önerilen akış:
- Root için parola belirleyin.
- Anonymous kullanıcıları kaldırın (
YES). - Remote root girişini kapatın (
YES). - Test veritabanını kaldırın (
YES). - Yetkileri yeniden yükleyin (
YES).
Red Hat belgeleri, MariaDB 10.5 ve üzeri sürümlerde güvenli varsayılanların zaten uygulandığını ve bu betiğin değerinin azaldığını belirtiyor. Yine de ayarları gözden geçirmek için çalıştırabilirsiniz.
5. Yerel bağlanma ve temel komutlar
# Yerel istemci mysql -u root -p # Sunucuda sürüm ve durum mysqladmin -u root -p version mysqladmin -u root -p status
6. Veritabanı ve kullanıcı oluşturma
mysql -u root -p -e " CREATE DATABASE appdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'BURAYA_GUCLU_PAROLA'; GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; FLUSH PRIVILEGES;"
BURAYA_GUCLU_PAROLA yerine kendi güçlü parolanızı yazın. Parolada ! karakteri kullanıyorsanız bu komutu çift tırnak içinde çalıştırmayın. Bash bu karakteri geçmiş komutu olarak yorumlar ve "event not found" hatası verir. Bu durumda mysql -u root -p ile istemciye girip SQL satırlarını orada çalıştırın. Komut satırına yazılan parola ayrıca kabuk geçmişinde kalır.
7. Uzaktan erişim (isteğe bağlı)
Veritabanına ağ üzerinden bağlanmanız gerekiyorsa üç şey yapın: bind-address ayarını açın, kullanıcıyı % ile yetkilendirin ve güvenlik duvarında 3306 portuna izin verin.
Önce sunucu yapılandırma dosyasını düzenleyin. Dağıtımın kendi paketinde bu dosya genellikle /etc/my.cnf.d/mariadb-server.cnf (CentOS 7'de /etc/my.cnf), resmî depodan kurulumda /etc/my.cnf.d/server.cnf olur. [mysqld] bölümüne şunu ekleyin:
bind-address=0.0.0.0
Özel bir port kullanacaksanız aynı bölüme port=3306 satırını ekleyip numarayı değiştirin. Belirli bir IP adresine bağlanmak isterseniz 0.0.0.0 yerine sunucunun IP adresini yazabilirsiniz. Ardından servisi yeniden başlatın:
sudo systemctl restart mariadb
Sonra uzak kullanıcıyı yetkilendirin. Bunu yalnızca gerektiğinde yapın.
mysql -u root -p -e " CREATE USER 'appuser'@'%' IDENTIFIED BY 'BURAYA_GUCLU_PAROLA'; GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'%'; FLUSH PRIVILEGES;"
% her adresten bağlantıya izin verir. Mümkünse bunun yerine yalnızca uygulama sunucusunun IP adresini yazın.
Ardından firewalld kurallarını ekleyin:
sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload
Bu kural 3306 portunu tüm adreslere açar. Mümkünse erişimi yalnızca güvendiğiniz IP adreslerine sınırlayın.
Varsayılan 3306 dışında bir port kullanacaksanız SELinux için de port tanımı gerekir. Örneğin 3307 için:
sudo semanage port -a -t mysqld_port_t -p tcp 3307 sudo systemctl restart mariadb
semanage komutu yoksa policycoreutils-python-utils paketini kurun (CentOS 7'de policycoreutils-python).
8. Performans için hızlı başlangıç ayarları
Aşağıdaki ayarlar trafiğe göre değişse de sıklıkla başlangıç noktası olarak kullanılır. Değerleri RAM ve iş yükünüze göre belirleyin.
# Yapılandırma dosyası → [mysqld] bölümü innodb_buffer_pool_size=1G innodb_log_file_size=256M max_connections=300 thread_cache_size=64 table_open_cache=4096
Değişiklikten sonra servisi yeniden başlatın:
sudo systemctl restart mariadb
9. Yedekleme ve geri yükleme
# Veritabanı yedeği (sıkıştırılmış) mysqldump -u root -p appdb | gzip > /backups/appdb_$(date +%F).sql.gz # Geri yükleme gunzip -c /backups/appdb_2025-01-01.sql.gz | mysql -u root -p appdb
/backups dizininin önceden var olduğundan emin olun ve geri yüklemede dosya adındaki tarihi kendi yedeğinize göre değiştirin.
10. Loglar ve sorun giderme
- Hizmet günlükleri:
journalctl -u mariadb - Hata günlükleri:
/var/log/mariadb/mariadb.logveya/var/log/mysql/mysqld.log(dağıtıma göre değişebilir) - Yapılandırma kontrolü:
mysqladmin -u root -p variablesveya SQL istemcisindeSHOW VARIABLES; - Bağlantı testi:
mysql -h SUNUCU_IP -u appuser -p
11. (İsteğe bağlı) Resmî MariaDB deposundan daha güncel sürüm
Daha yeni bir MariaDB sürümü istiyorsanız resmî MariaDB deposunu ekleyebilirsiniz. Önce /etc/yum.repos.d/MariaDB.repo dosyasını oluşturun. VER yerine istediğiniz sürümü yazın (ör. 10.11 veya 11.8) ve sürümün sisteminize uygun olduğundan emin olun.
[mariadb] name=MariaDB baseurl=https://rpm.mariadb.org/VER/rhel/$releasever/$basearch gpgkey=https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 enabled=1 module_hotfixes=1
Bu tek dosya CentOS 7 ile CentOS Stream 8/9 için de geçerlidir. $releasever ve $basearch değerlerini yum ya da dnf kendisi doldurur. Sonra paketi kurun:
# CentOS 7 sudo yum clean all sudo yum -y makecache sudo yum -y install MariaDB-server # CentOS Stream 8/9 sudo dnf clean all sudo dnf -y makecache sudo dnf -y install MariaDB-server
Not: Daha önce dağıtım deposundan MariaDB veya MySQL paketleri kurduysanız, sürüm çakışmasını önlemek için bunları kaldırıp (verilerinizi yedekleyerek) resmî depodan yeniden kurun.
12. Güncelleme ve kaldırma
# Güncelleme sudo yum -y update 'mariadb*' # CentOS 7 sudo dnf -y upgrade 'mariadb*' # Stream 8/9 # Kaldırma sudo systemctl disable --now mariadb sudo yum -y remove 'mariadb*' # CentOS 7 sudo dnf -y remove 'mariadb*' # Stream 8/9
Resmî depodan kurduysanız paket adları MariaDB- ile başlar (MariaDB-server gibi). mariadb* bunlarla eşleşmeyebilir, bu durumda MariaDB-* yazın.
Paketi kaldırmak verilerinizi silmez. Veriler genellikle /var/lib/mysql altında kalır. Yapılandırma dosyaları /etc/my.cnf ve /etc/my.cnf.d içinde, günlükler /var/log/mariadb altındadır. Bunları silmeden önce yedek alın.