Bu sorunu düzeltmek için birçok adım denedim. Bu soruna olası çözümler için, saçmalıktan duyuları filtrelemek zor olan birçok kaynak var. Sonunda burada iyi bir çözüm buldum :
Adım 1: Veritabanı Sürümünü Belirleme
$ mysql --version
MySQL ile böyle bir çıktı göreceksiniz:
$ mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
Veya MariaDB için şu şekilde çıktı alın:
mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
Daha sonra kullanacağınız için hangi veritabanını ve hangi sürümü çalıştırdığınızı not edin. Ardından, veritabanına manuel olarak erişebilmek için durdurmanız gerekir.
Adım 2: Veritabanı Sunucusunu Durdurma
Kök parolasını değiştirmek için, veritabanı sunucusunu önceden kapatmanız gerekir.
MySQL için aşağıdakileri yapabilirsiniz:
$ sudo systemctl stop mysql
Ve MariaDB için:
$ sudo systemctl stop mariadb
Adım 3: İzin Sunucusu Olmadan Veritabanı Sunucusunu Yeniden Başlatma
MySQL ve MariaDB'yi kullanıcı ayrıcalıkları hakkında bilgi yüklemeden çalıştırırsanız, şifre girmeden veritabanı komut satırına root ayrıcalıklarıyla erişmenizi sağlar. Bu, bilmeden veritabanına erişmenizi sağlayacaktır.
Bunu yapmak için, veritabanının kullanıcı ayrıcalık bilgilerini depolayan hibe tablolarını yüklemesini durdurmanız gerekir. Bu biraz güvenlik riski taşıdığından, diğer istemcilerin bağlanmasını önlemek için ağı da atlamanız gerekir.
Hibe tablolarını yüklemeden veya ağ oluşturmayı etkinleştirmeden veritabanını başlatın:
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
Bu komutun sonundaki ve işareti bu işlemi arka planda çalıştırır, böylece terminalinizi kullanmaya devam edebilirsiniz.
Şimdi veritabanına root istemek için bağlanabilirsiniz ki bu şifre istememelidir.
$ mysql -u root
Bunun yerine hemen bir veritabanı kabuğu istemi göreceksiniz.
MySQL İstemi
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
MariaDB İstemi
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Artık root erişimine sahip olduğunuza göre, root şifresini değiştirebilirsiniz.
Adım 4: Kök Parolasını Değiştirme
mysql> FLUSH PRIVILEGES;
Şimdi root şifresini değiştirebiliriz.
İçin MySQL 5.7.6 ve daha yeni olarak mariadb 10.1.20 ve daha yeni , aşağıdaki komutu kullanın:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
İçin MySQL 5.7.5 ve üstü yanı sıra mariadb 10.1.20 ve üzeri kullanım:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
new_password
Yeni seçtiğiniz şifrenizle değiştirdiğinizden emin olun .
Not: Eğer ALTER USER
komut değil çalışır, bu daha büyük bir sorunun genellikle göstergesidir bu. Ancak, UPDATE ... SET
bunun yerine kök parolayı sıfırlamayı deneyebilirsiniz .
[ÖNEMLİ] Bu benim özel sorunumu düzelten belirli bir satırdır:
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
Bundan sonra hibe tablolarını yeniden yüklemeyi unutmayın.
Her iki durumda da, komutun başarıyla yürütüldüğüne dair onay görmelisiniz.
Query OK, 0 rows affected (0.00 sec)
Parola değiştirildi, böylece artık veritabanı sunucusunun manuel örneğini durdurabilir ve eskisi gibi yeniden başlatabilirsiniz.
Adım 5: Veritabanı Sunucusunu Normal Olarak Yeniden Başlatın
Eğitici, veritabanını yeniden başlatmak için bazı diğer adımlara girer, ancak kullandığım tek parça şuydu:
MySQL için şunu kullanın:
$ sudo systemctl start mysql
MariaDB için şunları kullanın:
$ sudo systemctl start mariadb
Şimdi yeni parolanın doğru şekilde uygulandığını onaylayabilirsiniz:
$ mysql -u root -p
Komut şimdi yeni atanan parolayı sormalıdır. Girin ve veritabanı istemine beklendiği gibi erişmeniz gerekir.
Sonuç
Artık MySQL veya MariaDB sunucusuna geri yüklenen yönetici erişimine sahipsiniz. Seçtiğiniz yeni kök parolanın güçlü ve güvenli olduğundan emin olun ve güvenli bir yerde saklayın.