Linux sunucunuzda MySQL root şifresi nasıl sıfırlanır?

Bir Linux sunucusunda MySQL root parolasını sıfırlamak, MySQL sunucusuna erişim kaybolduğunda veya yeni bir sunucu kurulduğunda kritik bir görev olabilir.  Bu süreç, MySQL hizmetini durdurmak, MySQL’i güvenli modda başlatmak ve root şifresini güncellemek de dahil olmak üzere birkaç adımı içerir.  Bu kılavuz, MySQL root şifrenizi başarılı bir şekilde sıfırlayabilmenizi sağlamak için her adımda size ayrıntılı olarak yol gösterecektir.

 

Linux Sunucunuzda MySQL Root Parolasını Sıfırlama

MySQL root hesabınıza erişiminizi kaybettiğinizde root şifresini sıfırlamak çok önemlidir.  Bu kılavuz, bir Linux sunucusundaki MySQL root parolanızı sıfırlamak için adım adım bir yaklaşım sağlar.

  1. MySQL Hizmetini Durdurun: İlk adım, yeni bağlantıları önlemek için MySQL hizmetini durdurmaktır.
    $ sudo systemctl stop mysql

    MySQL hizmetini durdurmak, root şifresini sıfırlarken başka hiçbir kullanıcının veritabanına bağlanamamasını sağlar.

  2. MySQL Dizini için İzinleri Oluşturun ve Ayarlayın: Daha sonra gerekli dizini oluşturmanız ve doğru izinleri ayarlamanız gerekir.
    $ sudo mkdir -p /var/run/mysqld
    $ sudo chown mysql:mysql /var/run/mysqld
    $ sudo chmod -R 755 /var/run/mysqld
    $ sudo rm -f /var/run/mysqld/mysqld.sock.lock
    $ sudo rm -f /var/run/mysqld/mysqlx.sock.lock

    Bu komutlar dizini oluşturur, sahipliği ve izinleri ayarlar ve çakışmaları önlemek için mevcut tüm soket kilidi dosyalarını kaldırır.

  3. MySQL’i Güvenli Modda başlatın: Şimdi, hibe tabloları devre dışı bırakılarak MySQL’i güvenli modda başlatın.
    $ sudo mysqld_safe --skip-grant-tables &

    MySQL’i güvenli modda başlatmak, veritabanına şifre olmadan erişmenizi sağlar; bu, root şifresini sıfırlamak için gereklidir.

  4. MySQL’de oturum açın: MySQL’e şifresiz root kullanıcı olarak giriş yapın.
    mysql -u root

    Bu komut, root parolasını sıfırlamak için SQL komutlarını çalıştırabileceğiniz MySQL kabuğunda oturum açmanızı sağlar.

  5. MySQL Veritabanını seçin: Kullanıcı bilgilerinin saklandığı MySQL veritabanını kullanın.
    mysql> USE mysql;

    MySQL veritabanını seçmek, root şifresini sıfırlamak da dahil olmak üzere kullanıcı bilgilerini değiştirmenize olanak tanır.

  6. Flush Ayrıcalıkları: Değişikliklerin etkili olmasını sağlamak için MySQL ayrıcalıklarını yenileyin.
    mysql> FLUSH PRIVILEGES;

    Ayrıcalıkların temizlenmesi, izin tablolarını yeniden yükleyerek yapılan değişikliklerin sunucu tarafından tanınmasını sağlar.



  7. Root Parolasını Sıfırla: Root kullanıcı parolasını güncelleyin.
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

    Bu komut root şifresini ‘new_password’ olarak değiştirir.  ‘Yeni_şifre’yi istediğiniz şifreyle değiştirin.

  8. MySQL’den çıkın ve Hizmeti Yeniden Başlatın: MySQL kabuğundan çıkın.
    mysql> exit

     

    Resetting the MySQL password.
    MySQL şifresini sıfırlama.
  9. Güvenli Mod Sürecini Sonlandırın: MySQL güvenli mod işlemini sonlandırın.
    $ sudo killall mysqld

    Güvenli mod sürecini sonlandırmak, MySQL’in hibe tablolarını atlamadan normal şekilde çalışmasını sağlar.

  10. MySQL Hizmetini Yeniden Başlatın: Son olarak MySQL hizmetini normal şekilde başlatın.
    $ sudo systemctl start mysql

    MySQL hizmetini normal modda tekrar başlatmak, sunucuyu yeni root şifresiyle kullanmanızı sağlar.

  11. Yeni Şifreyi Doğrulayın: MySQL’de oturum açarak yeni root şifresinin çalıştığını doğrulayın.
    $ mysql -p

    İstendiğinde, parola sıfırlamanın başarılı olduğunu onaylamak için yeni parolayı girin.

     

    Using the new password to login as root to the MySQL server
    MySQL sunucusuna root olarak giriş yapmak için yeni şifreyi kullanma

 

Sorun Giderme

Sıfırlama işlemi sırasında sorunlarla karşılaşırsanız aşağıdaki günlük iletilerine ve çözümlere bakın.

İlgili Günlük Mesajları:

2024-06-26T09:13:42.950465Z 0 [ERROR] [MY-011292] [Server] Plugin mysqlx reported: 'Preparation of I/O interfaces failed, X Protocol won't be accessible'
2024-06-26T09:13:42.950494Z 0 [ERROR] [MY-011300] [Server] Plugin mysqlx reported: 'Setup of socket: '/var/run/mysqld/mysqlx.sock' failed, can't create lock file /var/run/mysqld/mysqlx.sock.lock'
2024-06-26T09:13:43.032408Z 0 [ERROR] [MY-010273] [Server] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.
2024-06-26T09:13:43.032420Z 0 [ERROR] [MY-010268] [Server] Unable to setup unix socket lock file.
2024-06-26T09:13:43.032425Z 0 [ERROR] [MY-010119] [Server] Aborting

Yaygın Sorunlar ve Çözümler:

1.  mysqlx Eklenti Hataları:
Hatalar:
– `Preparation of I/O interfaces failed, X Protocol won’t be accessible`
– `Setup of socket: ‘/var/run/mysqld/mysqlx.sock’ failed, can’t create lock file /var/run/mysqld/mysqlx.sock.lock`
Çözüm: MySQL kurulumunun tamamlandığından emin olun.  Aşağıdaki komutlarla soket sorunlarını giderin:

$ sudo mkdir -p /var/run/mysqld
$ sudo chown mysql:mysql /var/run/mysqld
$ sudo chmod -R 755 /var/run/mysqld
$ sudo rm -f /var/run/mysqld/mysqld.sock.lock
$ sudo rm -f /var/run/mysqld/mysqlx.sock.lock

2. Unix Soket Kilitleme Dosyası Hataları:
Hatalar:
– `Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.`
– `Unable to setup unix socket lock file.`
Çözüm: Hiçbir izin sorunu veya mevcut kilit dosyası olmadığından emin olun.  Düzeltmek için yukarıdaki komutları kullanın.

3. Sunucu İptal Ediliyor:
Hata: `Aborting`
Çözüm: İzinleri ayarlamak ve mevcut kilit dosyalarını kaldırmak için yukarıda gösterildiği gibi adımları izleyin.

4. Mevcut MySQL Süreci:
Hata:

$ sudo mysqld_safe --skip-grant-tables &
[2] 6050
2024-06-26T10:02:00.665573Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2024-06-26T10:02:00.683616Z mysqld_safe A mysqld process already exists
[1]+  Exit 1                  sudo mysqld_safe --skip-grant-tables

Çözüm: Güvenli modda başlatmayı denemeden önce MySQL sunucusunun durdurulduğundan emin olun.  Komut:

sudo systemctl stop mysql

5. Yeni Şifre Ayarlanırken Hata:
Hata:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

Çözüm: yeni bir şifre ayarlamadan önce:

FLUSH PRIVILEGES;

çalıştırıldığından emin olun

Sorunlar devam ederse daha ayrıntılı bilgi için `/var/log/mysql/error.log` adresindeki MySQL hata günlüğünü kontrol edin.

 

Yazının orijinalini buradan okuyabilirsiniz.