Blog’a Dön

MySQL ve MariaDB Kurulumu: Linux Sunucu Rehberi

Linux sunucuya MySQL uyumlu MariaDB kurulumu: güvenli ilk ayarlar, veritabanı ve kullanıcı oluşturma, uzaktan bağlantı, SSH tüneli, yedek ve performans.

Nodesty Ekibi5 dk okumaSunucular
Koyu Nodesty arka planında MariaDB yazısı ile Databases, Users ve Backups ifadeleri

MariaDB, MySQL ile uyumlu, açık kaynaklı ve ücretsiz bir ilişkisel veritabanıdır. WordPress, Laravel, FiveM sunucuları, Discord botları ve sayısız web uygulaması verilerini MySQL ya da MariaDB'de tutar. Kendi sunucunuzda MariaDB kurulumu birkaç dakika sürer; asıl önemli olan ilk ayarları güvenli yapmak, uygulamalar için doğru kullanıcıları oluşturmak ve veritabanını düzenli yedeklemektir.

Bu rehberde Ubuntu, Debian ve AlmaLinux sunuculara MariaDB kurulumunu, güvenli ilk ayarları, veritabanı ve kullanıcı oluşturmayı, uzaktan güvenli bağlantıyı, yedeklemeyi ve temel performans ayarlarını anlatıyoruz.

MySQL ve MariaDB arasındaki fark

MariaDB, MySQL'in ilk geliştiricileri tarafından MySQL'den türetilmiştir ve uzun yıllar onunla birebir uyumlu kalacak şekilde geliştirilmiştir. Komutlar, istemci araçları ve bağlantı protokolü aynıdır; MySQL bekleyen uygulamaların neredeyse tamamı MariaDB ile değişiklik yapmadan çalışır.

ÖzellikMariaDBMySQL
LisansAçık kaynak (GPL)Açık kaynak Community ve ticari sürümler
Varsayılan olduğu yerDebian, AlmaLinux, Rocky LinuxUbuntu'nun mysql-server paketi
UyumlulukMySQL istemcileri ve uygulamalarıylaKendisi
Tipik kullanımWeb siteleri, oyun sunucuları, botlarMySQL 8'e özgü özellik isteyen projeler

Bu rehberde MariaDB kullanıyoruz. Ubuntu'da MySQL'i tercih ederseniz kurulum sudo apt install mysql-server ile yapılır; sonraki SQL komutlarının neredeyse tamamı aynıdır.

Ubuntu ve Debian'a MariaDB kurulumu

Sunucunuza SSH ile bağlandıktan sonra:

sudo apt update
sudo apt install mariadb-server
systemctl status mariadb

Servis active (running) görünüyorsa kurulum tamamdır.

AlmaLinux ve Rocky Linux'ta:

sudo dnf install mariadb-server
sudo systemctl enable --now mariadb

Güvenli ilk ayarlar

Kurulumdan hemen sonra güvenlik betiğini çalıştırın:

sudo mariadb-secure-installation

Betik size birkaç soru sorar. Önerilen cevaplar:

  • Anonim kullanıcıları kaldır: Evet.
  • Root'un uzaktan girişini engelle: Evet.
  • Test veritabanını kaldır: Evet.
  • Yetki tablolarını yeniden yükle: Evet.

Ubuntu ve Debian'daki güncel kurulumlarda root kullanıcısı şifre yerine unix_socket ile doğrulanır: Sunucuda sudo yetkiniz varsa şifresiz bağlanırsınız, dışarıdan ise root ile hiç bağlanılamaz. Bu güvenli bir varsayılandır; değiştirmenize gerek yoktur. MariaDB konsoluna girmek için:

sudo mariadb

Veritabanı ve kullanıcı oluşturma

Her uygulama için ayrı bir veritabanı ve yalnızca o veritabanına yetkili ayrı bir kullanıcı oluşturun. Böylece bir uygulamada çıkan bir güvenlik açığı diğer veritabanlarınızı etkilemez. MariaDB konsolunda:

CREATE DATABASE uygulama CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'uygulama'@'localhost' IDENTIFIED BY 'guclu-bir-sifre';
GRANT ALL PRIVILEGES ON uygulama.* TO 'uygulama'@'localhost';
FLUSH PRIVILEGES;
EXIT;
  • utf8mb4: Türkçe karakterler ve emojiler dahil bütün Unicode karakterlerini doğru saklar. Eski utf8 yerine her zaman bunu kullanın.
  • 'uygulama'@'localhost': Kullanıcının yalnızca sunucunun kendisinden bağlanabileceğini belirtir. Uygulamanız aynı sunucudaysa doğru seçim budur.
  • GRANT ALL PRIVILEGES ON uygulama.*: Kullanıcıya yalnızca kendi veritabanında yetki verir.

Uygulamanızın bağlantı ayarlarına sunucu olarak localhost, port olarak 3306 ve oluşturduğunuz kullanıcı adı, şifre ve veritabanı adını yazın. FiveM sunucularında bu ayarın nasıl yapıldığını FiveM sunucu kurulumu rehberimizde anlattık.

Uzaktan güvenli bağlantı

HeidiSQL, DBeaver ya da MySQL Workbench gibi masaüstü araçlarıyla veritabanınızı yönetmek isteyebilirsiniz. Bunun iki yolu vardır.

Önerilen: SSH tüneli

MariaDB yalnızca 127.0.0.1 adresini dinlemeye devam eder ve 3306 portu internete hiç açılmaz. Bağlantı, şifreli SSH bağlantısının içinden geçer:

ssh -L 3307:127.0.0.1:3306 kullanici@203.0.113.10

Bu komut açıkken kendi bilgisayarınızdaki 127.0.0.1:3307 adresine bağlandığınızda aslında sunucudaki veritabanına bağlanırsınız. HeidiSQL ve DBeaver gibi araçların bağlantı ayarlarında hazır bir SSH tüneli seçeneği de vardır; sunucunun SSH bilgilerini girmeniz yeterlidir.

Doğrudan bağlantı

Başka bir sunucudaki uygulamanın veritabanına doğrudan bağlanması gerekiyorsa:

  1. /etc/mysql/mariadb.conf.d/50-server.cnf dosyasında bind-address = 127.0.0.1 satırını bind-address = 0.0.0.0 olarak değiştirin ve sudo systemctl restart mariadb ile servisi yeniden başlatın.
  2. Yalnızca bağlanacak IP adresine izin veren bir kullanıcı oluşturun:
    CREATE USER 'uygulama'@'198.51.100.7' IDENTIFIED BY 'guclu-bir-sifre';
    GRANT ALL PRIVILEGES ON uygulama.* TO 'uygulama'@'198.51.100.7';
    
  3. Güvenlik duvarında 3306 portunu yalnızca o IP adresine açın:
    sudo ufw allow from 198.51.100.7 to any port 3306 proto tcp
    

Veritabanı portunu herkese açmak, sunucunuzun dakikalar içinde otomatik şifre deneme saldırılarıyla karşılaşması demektir. 'kullanici'@'%' gibi her yerden bağlanabilen kullanıcılardan kaçının. Port ve güvenlik duvarı ayarlarını Port nedir? yazımızda ayrıntılı anlattık.

Yedekleme ve geri yükleme

Veritabanı, sunucunuzdaki en değerli veridir. mariadb-dump (MySQL'de mysqldump) ile tutarlı bir yedek alabilirsiniz:

sudo mariadb-dump --single-transaction --routines uygulama | gzip > uygulama-$(date +%F).sql.gz

--single-transaction, InnoDB tablolarının yedeğini veritabanını kilitlemeden ve tutarlı bir anda alır. Yedeği geri yüklemek için:

gunzip < uygulama-2026-10-14.sql.gz | sudo mariadb uygulama

Yedeklemeyi otomatikleştirmek için önce sudo mkdir -p /root/yedek ile bir klasör oluşturun, ardından sudo crontab -e ile her gece çalışan bir görev ekleyin:

0 4 * * * mariadb-dump --single-transaction --routines uygulama | gzip > /root/yedek/uygulama-$(date +\%F).sql.gz

Crontab içinde % karakterinin önüne \ koymanız gerekir. Yedekleri yalnızca aynı sunucuda tutmayın; bir kopyasını mutlaka başka bir yere gönderin. Bunun nasıl yapılacağını Sunucu yedekleme rehberimizde anlattık.

Temel performans ayarları

MariaDB varsayılan ayarlarla küçük projelerde sorunsuz çalışır. Veriniz büyüdükçe şu ayarlar fark yaratır; hepsi /etc/mysql/mariadb.conf.d/50-server.cnf dosyasının [mysqld] bölümüne yazılır:

[mysqld]
innodb_buffer_pool_size = 2G
max_connections = 200
slow_query_log = 1
long_query_time = 1
  • innodb_buffer_pool_size: Verilerin ve indekslerin bellekte tutulacağı alan. Performansı en çok etkileyen ayardır. Yalnızca veritabanı çalışan bir sunucuda RAM'in yarısından biraz fazlası, uygulamayla aynı sunucuda ise toplam veri boyutunu karşılayacak makul bir değer seçin.
  • max_connections: Aynı anda açılabilecek en fazla bağlantı sayısı.
  • slow_query_log: Belirlenen süreden (long_query_time, saniye) uzun süren sorguları günlüğe yazar. Yavaşlığın kaynağını bulmanın en kolay yoludur; çoğu zaman eksik bir indeksi işaret eder.

AlmaLinux ve Rocky Linux'ta ayar dosyası /etc/my.cnf.d/mariadb-server.cnf yolundadır. Değişikliklerden sonra sudo systemctl restart mariadb ile servisi yeniden başlatın.

Veritabanınız için Nodesty sunucuları

Veritabanı performansı büyük ölçüde disk hızına ve belleğe bağlıdır. Nodesty AMD EPYC 7763 VDS paketleri yüksek RAM'iyle büyük buffer pool gerektiren veritabanları için, AMD Ryzen 9 9950X VDS paketleri ise yüksek tek çekirdek hızıyla hızlı cevap vermesi gereken uygulamalar ve oyun sunucuları için uygundur. Her iki pakette de NVMe disk, nShield DDoS koruması ve 7 gün saklanan ücretsiz günlük yedekleme bulunur.

Sıkça Sorulan Sorular

MySQL mi MariaDB mi kurmalıyım?

Çoğu proje için ikisi de iş görür. MariaDB, MySQL'den türetilmiş açık kaynaklı bir veritabanıdır; Debian ve AlmaLinux'ta varsayılan olarak gelir ve WordPress, Laravel ya da FiveM gibi MySQL bekleyen yazılımlarla sorunsuz çalışır. Yazılımınız özellikle MySQL 8'e özgü bir özellik istiyorsa MySQL'i tercih edin.

MariaDB root şifresi nedir?

Ubuntu ve Debian'daki güncel MariaDB kurulumlarında root kullanıcısı şifre yerine unix_socket ile doğrulanır. Sunucuda sudo mariadb komutuyla şifresiz bağlanırsınız. Uygulamalarınız için root yerine her zaman ayrı ve şifreli bir kullanıcı oluşturun.

Veritabanına dışarıdan nasıl bağlanırım?

En güvenli yol SSH tünelidir; veritabanı portunu internete açmadan HeidiSQL, DBeaver ya da MySQL Workbench gibi araçlarla bağlanırsınız. Doğrudan bağlantı gerekiyorsa MariaDB'nin dinleme adresini değiştirip 3306 portunu yalnızca kendi IP adresinize açın.

Veritabanı için ne kadar RAM gerekir?

Küçük bir site ya da oyun sunucusu veritabanı birkaç yüz MB ile çalışır. Performansı en çok InnoDB buffer pool belirler; sık kullanılan verilerin bellekte durması sorguları hızlandırır. Yalnızca veritabanı çalışan bir sunucuda buffer pool için RAM'in yarısından biraz fazlası iyi bir başlangıçtır.

phpMyAdmin kurmalı mıyım?

Kurabilirsiniz, ama herkese açık bir phpMyAdmin sayfası sık saldırı hedefidir. Kuracaksanız erişimi kendi IP adresinizle sınırlandırın ve ek bir parola koruması kullanın. Masaüstü araçlarını SSH tüneliyle kullanmak çoğu durumda daha güvenli ve pratiktir.

Too many connections hatası neden olur?

Uygulamanız aynı anda MariaDB'nin izin verdiğinden fazla bağlantı açıyordur. Çoğu zaman sebep, bağlantıları kapatmayan bir uygulama ya da bağlantı havuzu ayarıdır. Uygulamayı düzeltmek asıl çözümdür; gerekirse max_connections değerini makul ölçüde artırabilirsiniz.

Nodesty

Yazar hakkında

Nodesty Ekibi · Altyapı ve Destek

Nodesty ekibi sunucularımızı, ağımızı ve DDoS korumamızı her gün işletir ve müşteri destek taleplerini 7/24 yanıtlar. Bu rehberler o deneyimden yazılır.

İlgili yazılar

Sunucunuzu şimdi başlatın.

Nodesty'nin üstün altyapısı ile projelerinizi özgürce inşa edin ve sınır tanımadan ölçeklendirin.

                                                                                                                                                                                                                            
                                                                                                                                                                                                                            
                                                                                                                                                                                                                            
                                                                                                                             ············································                                                   
                                                ··································································································..........···························                                     
                                       ················..........................................................................................................................··············                             
                                  ·············.................::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::::::::::::::::::::::::::::::::................···········                        
                             ············................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............·········                     
                         ············.................:::::::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::----------------:::::::::::::::::::::..........········                  
                    ············......................::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------:::::::::::::.........········                
                ··········.............................................::::::::::::::::::-------------==========================================-----------------------------------:::::::::::........·······               
             ········..................:.....................................::::::::::--------=======+++++++++++++++++++++++++++++++++++++=========================------------------::::::::::.......·······              
           ······.........::::::::::::::::::::................................:::::::-----=====++++xxxxxx**************************xxxxxxxxx++++++++++++++===================------------::::::::.......·······             
          ·····.......:::::::::::::::::::::::::::.............................:::::----===+++xxx****%%%%&&&&&&#############&&&&&&&%%%%%*******xxxxxxxx++++++++++++++==============----------:::::::......······             
         ····......::::::::-------------:::::::::::..........................::::---===+++xx***%%%&&&####@@@@@@@@@@@@@@@@@@@@@@@@####&&&&&%%%%*******xxxxxxxxx+++++++++++++===========--------::::::......·····             
        ····.....:::::::--------------------:::::::::.......................::::---===++xxx**%%&&&###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###&&&&%%%%%********xxxxxxxxxxx++++++++++++========------::::::.....······            
        ····.....:::::--------------------------::::::::....................::::---===++xx***%%&&&####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###&&&&&%%%%%**********xxxxxxxxxxxxx+++++++++=======------:::::.....·····            
        ····....::::::-------=============---------:::::::::................:::::---===+++xx***%%%&&&#####@@@@@@@@@@@@@@@@@@@@@@@@@#####&&&&&%%%%%%*************xxxxxxxxxxxxxx+++++++++======-----:::::....·····            
         ····....:::::-------================---------:::::::::...............:::::----===++++xxx***%%%%&&&&&&#################&&&&&&%%%%%%%*******************xxxxxxxxxxxxxxxxx++++++++======----:::::....·····            
         ·····....:::::--------=================---------::::::::::..............:::::::-----====+++++xxxxxx**************************xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx++++++++=====-----::::....·····            
          ·····.....:::::--------=================----------:::::::::::.................:::::::::-------=============++++++++++++++++++++++++++++++++++++xxxxxxxxxxxxxxxxxxxxxxx++++++++======-----::::....·····            
            ·····.....:::::::----------===========-------------::::::::::::.........................::::::::::::::::::------------------=============+++++++++++++++++++++++++++++++++=======-----::::.....·····            
              ······......:::::::---------------------------------:::::::::::::........................................:::::::::::::::-----------============+++++++++++++++++++++========------:::::.....·····             
                 ······........:::::::::---------------------------:::::::::::::::::...........................................:::::::::::::------------=============================--------::::::.....······              
                    ·········.........:::::::::::::::-------------::::::::::::::::::::::::.......................................::::::::::::::::--------------------------------------::::::::......·······                
                          ··········............::::::::::::::::::::::::::::::::::::::::::::::::::................................::::::::::::::::::::::::::-------------:::::::::::::::.........········                   
                                  ············..................:::::::::::::::::::::::::::::::::::::::::::.........................:::::::::::::::::::::::::::::::::::::................···········                        
                                             ················.............................................................................................................·················                                 
                                                           ······················................................................................···························                                                
                                                                               ·········································································