Yıllık alımda %20 indirim — Hosting & VDS
Metin2 Hesap Şifresi Değiştirme ve Yetki Verme (SQL)
Rehber

Metin2 Hesap Şifresi Değiştirme ve Yetki Verme (SQL)

M
Mezuhost Teknik Ekip
8 Ağustos 2026 8 dakika okuma 0 görüntülenme

Metin2'de oyuncu şifresi sıfırlama, hesap açma, ban ve ban kaldırma, GM yetkisi verme işlemlerinin SQL komutları ve şifreleme yöntemleri.

Sunucunuz büyüdükçe hesapla ilgili istekler gelmeye başlar: şifresini unutan oyuncu, kural ihlali sebebiyle engellenmesi gereken hesap, ekibe alınan yeni GM. Bunların hepsi account veritabanı üzerinden yürütülür.

Bu rehberde günlük yönetimde ihtiyaç duyacağınız SQL komutlarını topladık.

account Tablosunu Tanıyalım

Oyuncu hesapları account veritabanındaki account tablosunda tutulur. Yönetim açısından önemli sütunlar:

SütunNe işe yarar
idHesabın benzersiz numarası.
loginOyuncunun giriş yaptığı kullanıcı adı.
passwordŞifrenin karma (hash) hâli. Düz metin değildir.
social_idDepo şifresi olarak kullanılır.
emailKayıt e-posta adresi.
statusHesabın durumu. OK normal, BLOCK engelli.
availDtHesabın erişilebilir olduğu tarih. Süreli banlarda kullanılır.
create_timeKayıt tarihi.
last_playSon giriş zamanı.

Bu tabloya müdahale etmeden önce yedek alın. Tek bir yanlış UPDATE ile bütün oyuncuların şifresini aynı yapabilirsiniz. Yedekleme adımlarını Metin2 sunucu yedekleme rehberimizde anlattık.

Metin2 Şifreleri Nasıl Saklar?

Metin2 server files sürümlerinin çoğu şifreyi MySQL'in kendi PASSWORD() fonksiyonuyla saklar. Bazı derlemeler ise SHA1 ya da MD5 kullanır.

Hangisini kullandığınızı anlamanın en pratik yolu mevcut bir kayda bakmaktır:

SELECT login, password FROM account.account LIMIT 3;
  • * ile başlayan 41 karakterlik değer → PASSWORD()
  • 40 karakterlik, yıldızsız değer → SHA1
  • 32 karakterlik değer → MD5

Yanlış fonksiyonla şifre yazarsanız hesap oluşur ama oyuncu giriş yapamaz. Bu yüzden ilk iş şifreleme yöntemini tespit etmektir.

MySQL 8.0 ile birlikte PASSWORD() fonksiyonu kaldırıldı. Sunucunuz MySQL 8 üzerinde çalışıyor ama server files PASSWORD() bekliyorsa, ya sürümü düşürmeniz ya da kimlik doğrulama kodunu güncellemeniz gerekir.

Oyuncu Şifresi Değiştirme

PASSWORD() kullanan sunucularda

UPDATE account.account
SET password = PASSWORD('yeni_sifre')
WHERE login = 'oyuncu_adi';

SHA1 kullanan sunucularda

UPDATE account.account
SET password = SHA1('yeni_sifre')
WHERE login = 'oyuncu_adi';

MD5 kullanan sunucularda

UPDATE account.account
SET password = MD5('yeni_sifre')
WHERE login = 'oyuncu_adi';

WHERE satırını yazmayı unutmayın. Onsuz çalıştırılan bir UPDATE tablodaki bütün satırları günceller ve sunucunuzdaki herkesin şifresi aynı olur. Bunu yaşayan sunucu sayısı sandığınızdan fazla.

Güvenli çalışma alışkanlığı

Bir UPDATE yazmadan önce aynı WHERE koşuluyla bir SELECT çalıştırın:

SELECT login, email FROM account.account WHERE login = 'oyuncu_adi';

Tek satır dönüyorsa güncellemeyi yapabilirsiniz. Üç satır dönüyorsa koşulunuz hatalıdır ve bunu öğrenmek için doğru an, güncellemeden öncesidir.

Depo Şifresini Sıfırlama

Depo şifresi social_id sütununda tutulur ve genellikle 7 haneli bir sayıdır:

UPDATE account.account
SET social_id = '1234567'
WHERE login = 'oyuncu_adi';

Oyuncular "depo şifremi unuttum" derken çoğunlukla bunu kastediyor. Hesap şifresiyle karıştırmayın.

Elle Hesap Oluşturma

Test için ya da bir oyuncunun hesabını yeniden oluşturmak için:

INSERT INTO account.account (login, password, social_id, email, status, create_time)
VALUES ('test01', PASSWORD('test1234'), '1234567', 'test@ornek.com', 'OK', NOW());

Aynı login değeriyle ikinci bir kayıt eklemeye çalışırsanız hata alırsınız; bu sütun benzersizdir ve öyle kalmalıdır.

Hesap Engelleme ve Engel Kaldırma

Süresiz engelleme

UPDATE account.account
SET status = 'BLOCK'
WHERE login = 'kural_ihlali_yapan';

Süreli engelleme

7 günlük engel için:

UPDATE account.account
SET availDt = DATE_ADD(NOW(), INTERVAL 7 DAY)
WHERE login = 'oyuncu_adi';

Bu tarih gelene kadar hesap giriş yapamaz, sonra kendiliğinden açılır. Elle takip etmenize gerek kalmaz.

Engeli kaldırma

UPDATE account.account
SET status = 'OK', availDt = NOW()
WHERE login = 'oyuncu_adi';

Engelli hesapları listeleme

SELECT login, email, status, availDt
FROM account.account
WHERE status = 'BLOCK' OR availDt > NOW();

Engellemeleri neden yaptığınızı ayrı bir yerde kayıt altına alın. Altı ay sonra "bu hesap neden banlı" sorusuna cevap veremezseniz, haksız bir engeli kaldırmak yerine tartışmayla uğraşırsınız.

GM Yetkisi Verme

GM yetkisi account tablosunda değil, common veritabanındaki gmlist tablosunda tutulur:

INSERT INTO common.gmlist (mID, mAccount, mName, mContactIP, mServerIP, mAuthority)
VALUES (2, 'hesap_adi', 'karakter_adi', 'ALL', 'ALL', 'LOW_WIZARD');

Yetki seviyeleri: IMPLEMENTOR, GOD, HIGH_WIZARD, LOW_WIZARD, PLAYER. Destek ekibinize en düşük yetkiyi verin; ihtiyaç oldukça yükseltirsiniz.

Tablo değişikliğinin geçerli olması için oyun sunucusunu yeniden başlatmanız gerekir. Yetki verdikten sonra kullanılabilecek komutların tam listesi Metin2 GM kodları yazımızda.

GM yetkisini geri alma

DELETE FROM common.gmlist WHERE mAccount = 'hesap_adi';

Ekipten ayrılan birinin yetkisini aynı gün kaldırın. Bu, teknik bir öneri değil, yaşanmış olaylardan çıkarılmış bir ders.

Karakter İşlemleri

Bir hesabın karakterlerini görmek

SELECT p.name, p.level, p.job, p.playtime
FROM player.player p
JOIN account.account a ON p.account_id = a.id
WHERE a.login = 'oyuncu_adi';

Karakter adı değiştirme

UPDATE player.player
SET name = 'YeniIsim'
WHERE name = 'EskiIsim';

Karakter adları benzersizdir. Kullanımdaki bir isimle değiştirmeye çalışırsanız sorgu hata verir.

Silinmiş karakteri geri getirme

Silinen karakterler çoğu sürümde hemen kaldırılmaz; işaretlenir. Sunucunuzda böyle bir alan varsa geri döndürmek mümkündür. Yoksa tek yol yedekten kurtarmaktır — ki bu da yedeğiniz varsa mümkündür.

Sorgu Çalıştırmadan Önce

Kısa bir kontrol listesi:

  • Yedek aldınız mı?
  • WHERE koşulunu yazdınız mı?
  • Aynı koşulla önce SELECT çalıştırıp kaç satır etkileneceğini gördünüz mü?
  • Doğru veritabanındasınız değil mi? (account ile player karışır)
  • Oyuncu çevrimiçi mi? Çevrimiçi bir oyuncunun verisini değiştirirseniz, çıkışta bellekteki eski veri üzerine yazılabilir.

Son madde özellikle önemli. Karakter verisi üzerinde çalışacaksanız oyuncunun çıkmasını bekleyin ya da /dc ile bağlantısını kesin.

Özet

Hesap yönetimi tekrarlayan ama hata affetmeyen bir iş. Komutların kendisi basit; işi riskli yapan, yanlış WHERE koşulunun bütün oyuncu tabanını etkileyebilmesi.

Veritabanına Navicat ile bağlanırken sorun yaşarsanız Navicat şifre değiştirme rehberimize, sunucuya SSH ile bağlanmayı öğrenmek için PuTTY ile SSH bağlantısı yazımıza bakabilirsiniz. Altyapı ihtiyacınız için Metin2 sunucu paketlerimiz hazır.

metin2 sql hesap yönetimi şifre veritabanı
Paylaş
M

Mezuhost Teknik Ekip

Mezuhost — Teknik İçerik Ekibi

İletişim

Mezuhost ile Hizmetlerimizi Keşfedin

DDoS korumalı sunucular, yüksek performanslı VDS ve hosting çözümleri.

Güvenilir İş Ortaklarımız & Altyapı Sağlayıcılarımız

Stormwall
MikroTik
Juniper
Datacasa
Cloudflare
Dell
Ryzen
Arbor
Stormwall
MikroTik
Juniper
Datacasa
Cloudflare
Dell
Ryzen
Arbor
Stormwall
MikroTik
Juniper
Datacasa
Cloudflare
Dell
Ryzen
Arbor