15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
01.11.2024
1 +1

MySQL’de Root Şifresini Sıfırlama: Tam Adım Adım Kılavuz

MySQL root hesabınıza erişimi kaybetmek, bir veritabanı yöneticisinin karşılaşabileceği en yaygın — ve en stresli — durumlardan biridir. Parolayı unutmuş olsanız, kimlik bilgileri olmayan bir sunucu devralmış olsanız veya güvenlik uyumluluğu için döndürmeniz gerekse de, MySQL root parolasını sıfırlamak her sistem yöneticisinin ustalaşması gereken kritik bir beceridir.

Bu kapsamlı rehber, tüm süreci güvenli ve verimli bir şekilde anlatır; Linux ve Windows ortamlarını, birden fazla MySQL sürümünü ve ardından veritabanı altyapınızı güvenli tutmak için en iyi uygulamaları kapsar.

MySQL Root Kullanıcısı Nedir ve Neden Önemlidir?

Root kullanıcısı, MySQL’in varsayılan süper kullanıcı hesabıdır. Tüm veritabanı sunucusu genelinde sınırsız ayrıcalıklara sahiptir — veritabanları oluşturma ve silme, kullanıcı hesaplarını yönetme, sistem yapılandırmalarını değiştirme ve herhangi bir SQL komutunu kısıtlama olmaksızın yürütme.

Bu yükseltilmiş erişim nedeniyle, root hesabı MySQL kurulumunuzun hem en güçlü hem de en hassas bileşenidir. Tehlikeye atılmış veya erişilemeyen bir root hesabı, tüm uygulama yığınınızı durdurmaya neden olabilir. Bu nedenle, bu parolayı güvenli bir şekilde sıfırlamayı nasıl yapacağınızı anlamak isteğe bağlı değildir — bu temel bir yönetim sorumluluğudur.

MySQL’i bir VPS Hosting ortamında veya bir Dedicated Server‘da çalıştırıyorsanız, tam root düzeyinde işletim sistemi erişimine sahipsiniz; bu da kurtarma işlemini basit hale getirir. Paylaşılan ortamlar kısıtlamalar içerebilir — bu senaryoları da ele alacağız.

Başlamadan Önce Ön Koşullar

Parola sıfırlama işlemine başlamadan önce aşağıdakileri doğrulayın:

  • Linux sunucunuza SSH erişiminiz veya Windows sunucunuza RDP/yerel erişiminiz var
  • İşletim sisteminde sudo veya yönetici ayrıcalıklarınız var
  • Hangi MySQL sürümünün yüklü olduğunu biliyorsunuz (kontrol etmek için mysql --version çalıştırın)
  • Bir bakım penceresi mevcuttur, çünkü MySQL geçici olarak durdurulacaktır

> Güvenlik Uyarısı: --skip-grant-tables yöntemi, tüm MySQL bağlantıları için kimlik doğrulamayı geçici olarak devre dışı bırakır. Her zaman bu işlemi güvenli bir ağ ortamında gerçekleştirin ve mümkün olduğunca hızlı bir şekilde tamamlayın.

Adım 1 — MySQL Sunucusunu Durdurun

İlk adım, çalışan MySQL hizmetini düzgün bir şekilde kapatmaktır. Tam komut, işletim sisteminize ve init sisteminize bağlıdır.

Linux’ta (systemd — Ubuntu, Debian, CentOS 7+, RHEL 7+)

sudo systemctl stop mysql

MariaDB kurulumları için şunu kullanın:

sudo systemctl stop mariadb

Linux’ta (SysVinit — eski dağıtımlar)

sudo service mysql stop

Windows’ta

Yönetici Olarak Komut İstemi‘ni açın ve şunu çalıştırın:

net stop mysql

Alternatif olarak, Hizmetler‘i açın (services.msc), MySQL hizmetini bulun, sağ tıklayın ve Durdur‘u seçin.

Doğrulama: Devam etmeden önce MySQL’in durduğunu doğrulayın:

sudo systemctl status mysql

Çıktı inactive (dead) göstermelidir.

Adım 2 — MySQL’i --skip-grant-tables ile Güvenli Modda Başlatın

Bu, kurtarma işleminin çekirdeğidir. MySQL’i --skip-grant-tables bayrağıyla başlatmak, sunucuya normal kimlik doğrulamasını ve ayrıcalık denetimini atlamasını ve parola olmadan bağlanmanıza izin vermesini söyler.

Linux’ta

sudo mysqld_safe --skip-grant-tables &

Ampersand (&), işlemi arka planda çalıştırarak terminalinizi sonraki adımlar için serbest bırakır.

mysqld_safe kullanımdan kaldırıldığı daha yeni sistemlerde şunu kullanın:

sudo mysqld --skip-grant-tables --skip-networking &

> En İyi Uygulama: --skip-networking eklemek, bu savunmasız pencere sırasında herhangi bir uzak bağlantıyı önler ve saldırı yüzeyinizi önemli ölçüde azaltır.

Windows’ta

Yönetici Olarak Komut İstemi‘ni açın, MySQL kurulum dizinine gidin (tipik olarak C:Program FilesMySQLMySQL Server X.Xbin) ve şunu çalıştırın:

mysqld --skip-grant-tables

Bu Komut İstemi penceresini açık bırakın ve yeni bir pencerede devam edin.

Adım 3 — Parola Olmadan MySQL’e Giriş Yapın

MySQL güvenli modda çalışırken, yeni bir terminal penceresi açın ve parola sağlamadan root olarak MySQL sunucusuna bağlanın:

mysql -u root

Hemen MySQL komut isteminde olmalısınız:

mysql>

Bir bağlantı hatası alırsanız, güvenli mod işleminin tamamen başlatılması için birkaç saniye bekleyin ve tekrar deneyin.

Adım 4 — Root Parolasını Sıfırlayın

Artık tam ayrıcalıklarla MySQL içindesiniz. Tam komutlar MySQL sürümünüze bağlı olarak biraz farklılık gösterir.

MySQL 5.7.6+ ve MySQL 8.x için (Önerilen)

Önce ayrıcalık denetimini yeniden etkinleştirmek için grant tablolarını yeniden yükleyin:

FLUSH PRIVILEGES;

Ardından modern ALTER USER sözdizimini kullanarak root parolasını güncelleyin:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';

Değişiklikleri hemen uygulayın:

FLUSH PRIVILEGES;

MySQL 5.7.5 ve Daha Eski Sürümler için

FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('YourNewStrongPassword!');
FLUSH PRIVILEGES;

MariaDB için

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;

> Parola Gücü İpucu: Büyük harfler, küçük harfler, sayılar ve özel karakterleri birleştiren en az 16 karakterlik bir parola kullanın. Sözlük sözcüklerinden ve tahmin edilebilir kalıplardan kaçının. Bunu güvenli bir şekilde depolamak için özel bir parola yöneticisi kullanmayı düşünün.

Adım 5 — MySQL İsteminden Çıkın

Parola başarıyla güncellendiğinde, MySQL komut satırı arayüzünden çıkın:

EXIT;

Adım 6 — Güvenli Mod İşlemini Durdurun ve MySQL’i Normal Olarak Yeniden Başlatın

Artık --skip-grant-tables örneğini sonlandırmalı ve MySQL’i tam güvenlik etkinleştirilmiş şekilde getirmelisiniz.

Linux’ta

Güvenli mod MySQL işlemini bulun ve durdurun:

sudo systemctl stop mysql

Ardından MySQL’i normal olarak başlatın:

sudo systemctl start mysql

Doğru çalıştığını doğrulayın:

sudo systemctl status mysql

Windows’ta

mysqld --skip-grant-tables çalışan Komut İstemi penceresinde, durdurmak için Ctrl+C tuşlarına basın. Ardından MySQL hizmetini yeniden başlatın:

net start mysql

Adım 7 — Yeni Root Parolasını Test Edin

MySQL normal olarak çalışırken, yeni parolanızın çalıştığını doğrulayın:

mysql -u root -p

İstendiğinde yeni parolanızı girin. MySQL isteminde başarıyla ulaşırsanız, sıfırlama tamamlanmıştır.

Welcome to the MySQL monitor. Commands end with ; or g.
mysql>

Ayrıcalıklarınızın bozulmadığını doğrulamak için hızlı bir kontrol çalıştırın:

SHOW DATABASES;

Sunucudaki tüm veritabanlarının listesini görmelisiniz.

Yaygın Sorunları Giderme

Sıfırlamadan Sonra “Erişim Reddedildi”

Bu genellikle FLUSH PRIVILEGES komutunun ALTER USER ifadesinden önce yürütülmediği anlamına gelir. Güvenli mod işlemini tekrarlayın ve önce ayrıcalıkları temizlediğinizden emin olun.

MySQL Güvenli Modda Başlamıyor

Ayrıntılar için MySQL hata günlüğünü kontrol edin:

sudo tail -100 /var/log/mysql/error.log

Yaygın nedenler dosya izni sorunlarını veya geride kalan bir kilit dosyasını içerir. Gerekirse PID dosyasını kaldırın:

sudo rm /var/run/mysqld/mysqld.pid

Birden Fazla Root Hesabı

MySQL, farklı ana bilgisayarlar için birden fazla root girişine sahip olabilir (örn. root@localhost, root@127.0.0.1, root@::1). Hala erişim sorunları yaşıyorsanız, hepsini güncelleyin:

FLUSH PRIVILEGES;
ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'YourNewStrongPassword!';
ALTER USER 'root'@'::1' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;

Sıfırlamadan Sonra Güvenlik En İyi Uygulamaları

Parolayı başarıyla sıfırlamak işin yalnız yarısıdır. Erişimi yeniden kazandıktan sonra, bu sertleştirme önlemlerini uygulayın:

  1. mysql_secure_installation çalıştırın — Bu etkileşimli komut dosyası anonim kullanıcıları kaldırır, uzak root girişini devre dışı bırakır, test veritabanını kaldırır ve ayrıcalık tablolarını yeniden yükler.
  1. Root’u yalnızca localhost’a kısıtlayın — Root hesabının hiçbir zaman uzaktan bağlanmasına izin vermeyin. Uygulama düzeyinde erişim için sınırlı ayrıcalıklara sahip özel kullanıcılar oluşturun.
  1. MySQL denetim günlüğünü etkinleştirin — Tüm kimlik doğrulama denemelerini ve ayrıcalık değişikliklerini izleyin.
    15%

    Tüm Hosting Hizmetlerinde %15 indirim

    Becerilerini test et ve herhangi bir hosting planında İndirim kazan

    Kodu kullanın:

    Skills
    Başlayın