Ekran Kartlı Sunucu Satışları Başladı. İncele
Sunucu Bakımı ve İleri Yönetim

Minecraft Sunucusuna MySQL Nasıl Bağlanır?

Veritabanı ve kullanıcı oluşturma, eklenti config’ine bağlantı bilgisi yazma, uzak erişim izni ve bağlantı hatalarının çözümü.

  • 9 dk okuma
  • Güncelleme:
  • Yayın:
  • Batihost Teknik Ekibi

Kısaca Özet

  • Minecraft sunucusuna MySQL bağlamak üç adımdır: veritabanı oluşturmak, o veritabanına özel bir kullanıcı açmak ve eklentinin config dosyasına adres, kullanıcı adı ve parolayı yazmak.
  • Tek sunucu işletiyorsanız MySQL çoğu zaman gereksizdir. Asıl gerekli olduğu yer, birden fazla sunucunun aynı verileri paylaştığı Velocity veya BungeeCord ağlarıdır.
  • LuckPerms için storage-method: mysql (MariaDB kullanıyorsanız mariadb) yazıp data: bloğunu doldurmanız yeterlidir.
  • “Communications link failure” hatası neredeyse her zaman ağ, bind-address ya da kullanıcı-host eşleşmesi kaynaklıdır; parola hatası ayrı bir mesaj verir.

Minecraft sunucusuna MySQL bağlamak, eklenti verilerini yerel dosyalar yerine merkezî bir veritabanında tutmak demektir ve üç adımdan oluşur: bir veritabanı oluşturursunuz, o veritabanına yetkili ayrı bir kullanıcı açarsınız, sonra eklentinin yapılandırma dosyasına adres, kullanıcı adı ve parolayı yazıp sunucuyu yeniden başlatırsınız. İşin tamamı on dakikadan kısa sürer; asıl zaman kaybı genellikle bağlantı hatalarını çözmekte yaşanır.

Bu rehberde veritabanını nereye kurmanız gerektiğini, kullanıcıyı doğru yetkilerle nasıl oluşturacağınızı, LuckPerms ve CoreProtect gibi yaygın eklentilerin gerçek yapılandırma satırlarını, uzak bağlantıyı güvenli açmayı ve “Communications link failure” gibi hataların birebir metinlerinden yola çıkarak teşhis yapmayı göreceksiniz.

BilgiVeritabanı (database), verinin satır ve sütunlar hâlinde saklandığı bir depodur. Minecraft eklentileri normalde bu veriyi kendi klasöründeki bir dosyada tutar; MySQL’e geçtiğinizde aynı veriye birden fazla sunucu aynı anda erişebilir.

MySQL Ne Zaman Gerekir, Ne Zaman Gereksizdir?#

En sık yapılan hata, “profesyonel görünsün” diye tek bir sunucuyu MySQL’e taşımaktır. Tek sunucuda MySQL size hız kazandırmaz; aksine araya bir ağ katmanı ve bir servis daha koyar. Yerel depolama (LuckPerms’te H2, CoreProtect’te DuckDB) çoğu durumda daha hızlıdır.

MySQL’in gerçekten gerekli olduğu senaryolar şunlardır:

SenaryoMySQL gerekli mi?Neden
Tek Paper sunucusu, 20-40 oyuncuHayırYerel H2 / DuckDB daha hızlı ve bakımsız çalışır
Lobi + survival + minigame ağıEvetYetki, ekonomi ve ceza kayıtları ortak olmalı
Web sitesinde oyuncu verisi göstermekEvetSite aynı tabloları okuyabilir
Sunucu dışı bir panel veya Discord botuEvetVeriye sunucu kapalıyken de erişilir
Tek sunucu ama sık dünya sıfırlamaEvetVeri dünya klasöründen bağımsız kalır
MySQL’e geçmenin mantıklı olduğu durumlar

Bir Velocity veya BungeeCord ağı kuruyorsanız karar zaten verilmiş demektir: oyuncu lobiden survival’a geçtiğinde VIP rütbesinin kaybolmaması için yetkilerin ortak bir yerde durması gerekir.

MySQL mi MariaDB mi, Nereye Kurulur?#

MariaDB, MySQL’in açık kaynak çatallamasıdır ve Minecraft eklentilerinin neredeyse tamamıyla uyumludur. Ubuntu ve Debian üzerinde depo paketleri daha güncel olduğu için pratikte MariaDB kurulumu biraz daha kolaydır. Tek dikkat edilecek nokta eklenti tarafındaki sürücü seçimidir: LuckPerms’te MariaDB kullanıyorsanız mysql değil mariadb yazmalısınız.

Aynı makine mi, ayrı sunucu mu?#

Veritabanını Minecraft sunucusuyla aynı makineye kurmak küçük ve orta ölçekli sunucular için en iyi seçenektir. Bağlantı 127.0.0.1 üzerinden gider, ağ gecikmesi yok denecek kadar azdır ve 3306 portunu internete açmanız gerekmez. Ayrı bir veritabanı sunucusu ancak birden fazla fiziksel makinede sunucu ağı işletiyorsanız anlamlıdır.

DikkatMySQL’i Minecraft ile aynı makinede çalıştıracaksanız RAM’i buna göre planlayın. 8 GB’lık bir pakette Java heap’ini -Xms6G -Xmx6G yapıp kalan payı işletim sistemi ve MySQL için bırakın. Eklenti sayısı fazlaysa 12-16 GB’lık bir pakete çıkmak daha rahat olur.

Adım Adım: Veritabanı ve Kullanıcı Oluşturma#

Aşağıdaki adımlar veritabanı sunucusunun kurulu ve çalışır olduğunu varsayar. Linux tarafında MySQL kabuğuna mysql -u root -p ile, Windows tarafında ise “MySQL Command Line Client” kısayoluyla girersiniz. Sunucunuza erişim için SSH bağlantısı ya da Uzak Masaüstü kullanabilirsiniz.

  1. Veritabanı kabuğuna girin#

    Yönetici hesabıyla bağlanın. Parola sorulduğunda kurulum sırasında belirlediğiniz root parolasını girin.

    mysql -u root -p
  2. Veritabanını oluşturun#

    Türkçe karakterler ve emoji içeren sohbet kayıtlarının bozulmaması için karakter setini utf8mb4 seçin. Bu adımı atlarsanız bazı eklentilerde “???” şeklinde bozuk metinler görürsünüz.

    CREATE DATABASE minecraft
      CHARACTER SET utf8mb4
      COLLATE utf8mb4_unicode_ci;
  3. Eklentiler için ayrı bir kullanıcı açın#

    Root hesabını asla eklenti config dosyasına yazmayın. O dosyayı okuyabilen herkes tüm veritabanı sunucusuna hükmeder. Bunun yerine yalnızca bu veritabanına yetkili bir kullanıcı oluşturun.

    CREATE USER 'mcuser'@'localhost' IDENTIFIED BY 'uzun-ve-rastgele-parola';
    GRANT ALL PRIVILEGES ON minecraft.* TO 'mcuser'@'localhost';
    FLUSH PRIVILEGES;
  4. Bağlantıyı test edin#

    Kabuktan çıkıp yeni kullanıcıyla girin. Bağlanabiliyorsanız eklenti de bağlanır; bağlanamıyorsanız sorun eklentide değil, veritabanı tarafındadır.

    mysql -u mcuser -p minecraft
  5. Eklenti yapılandırmasını doldurun ve sunucuyu yeniden başlatın#

    Bağlantı bilgilerini ilgili eklentinin config dosyasına yazın, ardından sunucuyu tamamen durdurup açın. Depolama yöntemi değişikliği çalışan sunucuda reload ile uygulanmaz.

LuckPerms’i MySQL’e Bağlama#

LuckPerms’in varsayılan depolama yöntemi H2’dir, yani yerel bir dosyadır. MySQL’e geçmek için plugins/LuckPerms/config.yml dosyasındaki iki bölümü düzenlersiniz. Aşağıdaki blok LuckPerms’in kendi varsayılan yapılandırmasıyla aynı yapıdadır:

# plugins/LuckPerms/config.yml
storage-method: mysql   # MariaDB kullaniyorsaniz: mariadb

data:
  address: localhost          # host:port de yazilabilir, or. 127.0.0.1:3306
  database: minecraft
  username: mcuser
  password: 'uzun-ve-rastgele-parola'

  pool-settings:
    maximum-pool-size: 10
    minimum-idle: 10
    maximum-lifetime: 1800000   # 30 dakika
    keepalive-time: 0
    connection-timeout: 5000    # 5 saniye

  properties:
    useUnicode: true
    characterEncoding: utf8

Yapılandırmadaki yorum satırı bu ayarların yalnızca MySQL/MariaDB gibi uzak depolama yöntemlerinde anlamlı olduğunu belirtir; yerel depolamada bunlara dokunmanız gerekmez. Dosyayı kaydettikten sonra sunucuyu durdurup açın ve konsolda LuckPerms’in hangi depolamayı kullandığını yazan satırı kontrol edin.

Zaten H2 üzerinde kurulu bir yetki yapınız varsa, MySQL’e geçmeden önce mevcut verinizi dışa aktarmayı unutmayın. Grup ve izin yapısını sıfırdan kurmak yerine taşımak istiyorsanız LuckPerms yetki sistemi rehberindeki göç adımlarını izleyin.

UyarıDepolama yöntemini değiştirdiğinizde LuckPerms boş bir veritabanına bağlanır ve tüm gruplar kaybolmuş gibi görünür. Bu bir hata değildir; veri eski H2 dosyasında durmaya devam eder. Geçişten önce plugins/LuckPerms klasörünün tam bir kopyasını alın.

CoreProtect ve Diğer Eklentilerde Veritabanı Ayarı#

CoreProtect tarafında 2026 itibarıyla önemli bir değişiklik var: resmî dokümantasyon yeni kurulumların gömülü DuckDB ile geldiğini belirtiyor. Yani artık varsayılan ne SQLite ne de MySQL. database-type anahtarı dört değer kabul eder: duckdb (varsayılan), clickhouse, sqlite ve mysql.

# plugins/CoreProtect/config.yml (yeni sema)
database-type: mysql
table-prefix: co_

Var olan bir SQLite veya MySQL kurulumunu güncellemek onu DuckDB’ye çevirmez. database-type anahtarı dosyada yoksa CoreProtect bunu eski use-mysql ayarından türetir ve uygun değeri kendisi yazar. Eski şemadan gelen mysql-host, mysql-port, mysql-database, mysql-username ve mysql-password anahtarları hâlâ karşınıza çıkabilir; bu adları resmî config sayfası açıkça listelemediği için, elinizdeki sürümün kendi config.yml dosyasındaki anahtar adlarını esas alın.

DikkatCoreProtect’in güncel Community Edition v24.0 sürümü CraftBukkit/Spigot/Paper 1.16.5–26.1.2 aralığını destekliyor; 26.2 henüz desteklenmiyor. 26.2’ye geçmeden önce eklentinin yeni sürümünü bekleyin, aksi hâlde log kaydınız açılmaz.

Diğer eklentilerde ortak mantık#

AuthMe, ekonomi ve ceza eklentilerinin hepsinde aynı beş alan istenir: adres, port, veritabanı adı, kullanıcı adı ve parola. Anahtar adları eklentiden eklentiye değişir, bu yüzden kalıbı ezberlemek yerine eklentinin kendi config.yml dosyasındaki veritabanı bölümünü açın. AuthMe giriş sistemi ve ekonomi eklentileri için aynı kullanıcıyı ve aynı veritabanını paylaşabilirsiniz; her eklenti kendi tablolarını farklı önekle oluşturur.

İndirmeniz gerekenler
  • LuckPerms 5.5.5726.2 uyumlu Bukkit / Velocity / Fabric.jarÜcretsiz
    İndir
  • CoreProtect Community Edition v24.0En fazla 26.1.2 Spigot / Paper.jarÜcretsiz
    İndir

Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden jar indirmeyin. Eklenti dosyalarını nereye koyacağınızı bilmiyorsanız plugin kurulumu rehberine bakın.

Uzak Sunucudan MySQL’e Bağlanma ve Güvenlik#

Minecraft sunucusu ile veritabanı ayrı makinelerdeyse üç şeyi ayarlamanız gerekir: MySQL’in dışarıdan gelen bağlantıları dinlemesi, güvenlik duvarında 3306 portunun açılması ve kullanıcının doğru host ile tanımlanması.

Ubuntu ve Debian üzerinde dinleme adresi /etc/mysql/mysql.conf.d/mysqld.cnf dosyasındaki bind-address satırıyla belirlenir. Varsayılan değer 127.0.0.1’dir ve bu, MySQL’in yalnızca kendi makinesinden gelen bağlantıları kabul etmesi demektir.

# /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0

Değişiklikten sonra MySQL servisini yeniden başlatın. Ardından kullanıcıyı, bağlanacak makinenin IP adresiyle sınırlayarak tanımlayın:

-- Uzak erisim icin kullanici (IP'yi mutlaka kisitlayin)
CREATE USER 'mcuser'@'203.0.113.10' IDENTIFIED BY 'guclu-parola';
GRANT ALL PRIVILEGES ON minecraft.* TO 'mcuser'@'203.0.113.10';
FLUSH PRIVILEGES;

-- Mevcut kullanici/host eslesmelerini gorun
SELECT host, user FROM mysql.user;

Bağlantıyı Minecraft sunucusunun bulunduğu makineden test edin:

mysql -h 203.0.113.5 -P 3306 -u mcuser -p minecraft
Uyarıbind-address = 0.0.0.0 ile 'mcuser'@'%' birleşimi veritabanınızı tüm internete açar ve otomatik tarayıcı botlarının hedefi hâline getirir. Minecraft sunucusu ile MySQL aynı makinedeyse bind-address değerini 127.0.0.1’de bırakın. Ayrı makinelerdeyse yalnızca o makinenin IP adresine izin verin ve güvenlik duvarını buna göre daraltın; ayrıntılar için güvenlik duvarı yapılandırma rehberine bakın.

Bağlantı Hataları ve Çözümleri#

Veritabanı bağlantısı çalışmadığında konsolda göreceğiniz satırlar genelde şu kalıplardadır. Bu metinleri sunucu loglarında aynen aratabilirsiniz:

Communications link failure. The last packet successfully received from the server was 114 milliseconds ago.
Failed to validate connection me.lucko.luckperms.lib.mysql.jdbc.JDBC4Connection@b2ed74e (No operations allowed after connection closed.).
Connection is not available, request timed out after 5017ms.
java.net.SocketException: Network is unreachable: recv failed

Mesajın içindeki süreye bakın#

“The last packet successfully received…” satırındaki süre teşhis için en değerli ipucudur. 0 milliseconds ago yazıyorsa bağlantı hiç kurulamamıştır; sorun ağ, port veya yetki tarafındadır. Yüzlerce milisaniye ya da dakikalar yazıyorsa bağlantı bir süre çalışmış sonra kopmuştur; bu genelde boşta kalan bağlantıların MySQL tarafında zaman aşımına uğramasından kaynaklanır.

BelirtiOlası nedenYapılacak
0 milliseconds agoServis kapalı veya port kapalıMySQL servisini ve 3306 portunu kontrol edin
Network is unreachableYanlış IP veya yönlendirme sorunuAdresi ping ve mysql -h ile doğrulayın
request timed out after 5017msHavuz bağlantı bulamıyormaximum-pool-size ve MySQL max_connections değerine bakın
Access denied for userParola veya host eşleşmesi yanlışSELECT host, user FROM mysql.user; çıktısını kontrol edin
Unknown databaseVeritabanı adı yanlış yazılmışConfig’deki database değerini karşılaştırın
MySQL bağlantı hatalarının teşhis tablosu
İpucuParola içinde #, : veya @ gibi karakterler varsa YAML dosyasında parolayı tek tırnak içine alın. Tırnaksız yazılan parolalarda bu karakterler yorum ya da ayraç sanılır ve eklenti yanlış parolayla bağlanmaya çalışır.

Veritabanı Yedekleme ve Taşıma#

MySQL’e geçtiğiniz andan itibaren yedekleme planınız değişir: artık dünya klasörlerini kopyalamak yetmez. Yetkiler, ekonomi bakiyeleri ve log kayıtları veritabanındadır. İkisini birlikte yedeklemezseniz geri dönüşte tutarsız bir sunucu elde edersiniz.

# Tek veritabanini disa aktarma
mysqldump -u mcuser -p minecraft > minecraft-yedek-$(date +%F).sql

# Geri yukleme
mysql -u mcuser -p minecraft < minecraft-yedek-2026-08-18.sql

Bu dosyayı dünya yedekleriyle aynı arşive koymak en pratik yoldur. Yedekleme döngüsünü ve saklama stratejisini nasıl kuracağınızı Minecraft sunucu yedekleme rehberinde bulabilirsiniz. Sunucuyu başka bir makineye taşırken da ilk aktaracağınız şey bu dump dosyası olmalıdır.

Performans: Havuz Ayarları ve Donanım#

Bağlantı havuzu (connection pool), eklentinin her sorgu için yeni bağlantı açmak yerine hazır bağlantıları yeniden kullanmasını sağlar. LuckPerms’in varsayılan maximum-pool-size: 10 değeri tek sunucu için fazlasıyla yeterlidir. Aynı veritabanına bağlanan sunucu sayısı arttıkça toplam bağlantı sayısının MySQL’in max_connections sınırını aşmadığından emin olun; beş sunucunun her biri onar bağlantı açtığında elli bağlantıya çıkarsınız.

Donanım tarafında belirleyici olan disk gecikmesidir. Veritabanı çok sayıda küçük okuma-yazma yapar; bu iş yükünde NVMe SSD ile mekanik disk arasındaki fark saniyelerle ölçülür. Minecraft’ın ana tick döngüsü tek çekirdekte çalıştığı için işlemci tarafında da çekirdek sayısı değil saat hızı önemlidir.

RAM
Minecraft + MySQL aynı makinede: en az 8 GB, eklenti yoğunsa 12-16 GB
İşlemci
AMD Ryzen 9 7900X / 7950X sınıfı yüksek saat hızlı işlemci
Disk
NVMe SSD, en az 50 GB
Java heap
8 GB paket için -Xms6G -Xmx6G, 16 GB paket için -Xms14G -Xmx14G
Port
MySQL 3306/TCP, Minecraft 25565/TCP

Kendi veritabanınızı yönetmek istemiyorsanız hazır kurulu gelen Minecraft sunucu paketlerimizden birini, kendi MySQL sürümünüzü kurmak istiyorsanız yüksek frekanslı Ryzen VDS paketlerini inceleyebilirsiniz. Yeni bir sunucuda önce yapmanız gerekenler için VDS ilk ayarlar rehberi iyi bir başlangıçtır.

Özetle#

Minecraft sunucusuna MySQL bağlamanın özü basittir: CREATE DATABASE ile veritabanını, CREATE USER ve GRANT ile sınırlı yetkili bir kullanıcıyı oluşturur, bilgileri eklentinin config dosyasına yazar ve sunucuyu yeniden başlatırsınız. Tek sunucuda buna çoğu zaman ihtiyaç yoktur; asıl kazanç sunucu ağlarında ortaya çıkar.

Hata alırsanız önce mesajı okuyun: “Communications link failure” bağlantının kurulamadığını, “Access denied” yetkinin yanlış olduğunu söyler. Root hesabını hiçbir eklentiye vermeyin, veritabanını gereksiz yere internete açmayın ve dump dosyanızı dünya yedeğiyle birlikte saklayın. Takıldığınız bir nokta olursa destek talebi açarak yardım isteyebilirsiniz.

Sıkça Sorulan Sorular#

Minecraft sunucusu için MySQL şart mı?

Hayır, şart değil. Tek bir Paper sunucusu işletiyorsanız LuckPerms’in H2 dosyası ve CoreProtect’in gömülü DuckDB deposu sorunsuz çalışır. MySQL asıl olarak lobi, survival ve minigame sunucularının aynı yetkileri, aynı ekonomiyi veya aynı giriş kayıtlarını paylaşması gerektiğinde zorunlu hâle gelir.

MySQL mi MariaDB mi kullanmalıyım?

İkisi de çalışır; Linux sunucularda MariaDB genelde daha kolay kurulur. Önemli nokta eklenti tarafındaki ayardır: LuckPerms’te MariaDB kullanıyorsanız storage-method: mysql değil storage-method: mariadb yazın. LuckPerms MariaDB için ayrı bir sürücü kullanır ve bu seçenek daha performanslıdır.

LuckPerms MySQL ayarı nasıl yapılır?

plugins/LuckPerms/config.yml dosyasında storage-method değerini mysql yapar, altındaki data: bloğuna address, database, username ve password değerlerini yazarsınız. Sunucuyu tamamen kapatıp yeniden açın; /lp reload depolama yöntemini değiştirmez.

MySQL bağlantı bilgilerini nereden alacağım?

Veritabanı sizin sunucunuzdaysa adres localhost ya da 127.0.0.1, port 3306’dır; kullanıcı adını ve parolayı CREATE USER komutuyla siz belirlersiniz. Paylaşımlı bir panelde ise bilgiler panelin “Veritabanları” bölümünde listelenir. Root hesabını eklentilere vermeyin.

“Communications link failure” hatası neden çıkar?

Bu hata bağlantının hiç kurulamadığını ya da ortada koptuğunu söyler, parolayla ilgisi yoktur. Sırasıyla şunları kontrol edin: MySQL servisi çalışıyor mu, bind-address yalnızca 127.0.0.1’e mi kilitli, 3306 portu güvenlik duvarında açık mı ve kullanıcının host yetkisi doğru mu.

CoreProtect artık MySQL kullanmıyor mu?

Kullanabilir ama artık varsayılan değil. CoreProtect dokümantasyonu yeni kurulumların gömülü DuckDB ile geldiğini belirtiyor. database-type anahtarı duckdb, clickhouse, sqlite ve mysql değerlerini kabul eder. Var olan bir MySQL kurulumu güncellenirken otomatik olarak DuckDB’ye çevrilmez.

MySQL’i Minecraft sunucusuyla aynı makineye kurmak sorun olur mu?

Küçük ve orta ölçekli sunucularda tam tersine en iyi seçenektir: ağ gecikmesi sıfıra iner ve veritabanını internete açmanız gerekmez. Tek koşul yeterli RAM ayırmaktır. 8 GB’lık bir pakette Java heap’i -Xms6G -Xmx6G yapıp geri kalanı işletim sistemi ile MySQL’e bırakın.

Veritabanı yedeğini nasıl alırım?

mysqldump -u mcuser -p minecraft > minecraft-yedek.sql komutu tüm tabloları tek bir SQL dosyasına aktarır. Bu dosyayı dünya klasörleriyle birlikte aynı yedekleme döngüsüne koyun; yetkileri veritabanında, arazileri dünyada tutan bir sunucuda yalnızca birini yedeklemek işe yaramaz.

Sunucu Bakımı ve İleri Yönetim — Tüm Rehberler#

  1. Minecraft Sunucusu Yeni Sürüme Nasıl Yükseltilir?
  2. Minecraft Sunucu Logları Nasıl Okunur?
  3. Minecraft’ta Chunk Ön Üretimi (Pregeneration)
  4. Minecraft Dünya Dosyasını Küçültme (Trim)
  5. Minecraft Sunucusunda Dünya Nasıl Sıfırlanır?
  6. Minecraft Sunucusuna MySQL Nasıl Bağlanır?
  7. Minecraft RCON Kurulumu ve Güvenli Kullanımı
  8. Minecraft Sunucusunda Oyuncu İstatistikleri Nasıl Takip Edilir?

Bu rehber Batihost teknik ekibi tarafından hazırlanmış ve tarihinde güncellenmiştir. Eksik veya hatalı bulduğunuz bir bilgi varsa bize bildirin.

Başa dön