MySQL kök şifresi sıfırlanamadı, her şeyi denedi


9

İlk olarak Ask Ubuntu'dan bu sorunla ilgili tüm soruları okuduğumu ve resmi dokümanlardan tüm adımları izlediğimi açıklığa kavuşturalım:

help.ubuntu.com

dev.mysql.com

Ubuntu 16.04.1 LTS kullanıyorum

Birisi muhtemelen daha önce denediğim bir şey önermeden önce ne yaptığımı göstereceğim:

root@localhost:/# sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.

MySQL doğru şekilde durdu.

root@localhost:/# sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 3316
root@localhost:/#

Burada bunun çalışıp çalışmadığını bilmiyorum, bu yüzden adımları yine de takip ediyorum.

root@localhost:/# mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
root@localhost:/#

Hizmet başlatılmadığı için çalışmıyor gibi görünüyor. Sonraki adımlara devam edemediğim için diğer yöntemi deniyorum (temizleme).

Kullandıktan sonra:

sudo apt-get --purge remove
sudo apt-get install

Bir sonraki adımı deniyorum:

root@localhost:/# mysqladmin -u root password MyNewPassword
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
root@localhost:/#

Bu da işe yaramaz gibi mysql web belirtilen diğer yöntemleri denedim:

Bu yüzden orada işaret ettiğim gibi mysql işlemini öldürüyorum ve

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &
[1] 5267
root@localhost:/# 2017-02-01T12:47:49.250083Z mysqld_safe Logging to syslog.
2017-02-01T12:47:49.252427Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.254765Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.257045Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

[1]+  Salida 1                mysqld_safe --init-file=/home/me/mysql-init
root@localhost:/#

Şimdi seçeneklerden çıkarken, bu yüzden burada Ask Ubuntu'da bahsedilen başka bir yöntemi de deniyorum:

root@localhost:/# sudo dpkg-reconfigure mysql-server-5.7
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.17, use --force if you still need to run mysql_upgrade
root@localhost:/#

Ve şimdi gerçekten seçenekler dışındayım, bu yüzden herhangi bir öneri bekliyoruz.

Yanıtlar:


16

Aynı sorunu yaşadım ve bu satırı uygulayarak çözdüm:

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld

bu satırı çalıştırmadan önce:

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &

Benim için bu adımlar daha iyi sonuç verdi.

Bunu yapmanın daha temiz bir yolu olduğunu düşünüyorum, ama benim için hızlı ve etkili bir çözümdü.


1
thx, hile yaptı;)
Ilovelinux

MySQL 5.7 olur. Mysql hizmetini durdurduğunuzda / var / run / mysqld kaldırılır ve hizmeti yeniden başlattığınızda yeniden oluşturulur.
Capy

1

Denediğim ne olursa olsun yeniden yüklemek için mysql alamadım, sadece parolayı denemek ve sıfırlamak zorunda kaldım.

Bu rotaya Ubuntu 16.04.1 LTS'de gitmek zorunda kaldım. Bir saat veya daha fazla MySql web sitesinden SO ve AskUbuntu Q & A'daki her şeye tüm diğer önerileri deneyerek geçirdim, nihayet çalıştım:

Not: kullanıcı kökü için parola girin gösterildiğinde, orijinal parolamam yoktu. yeni şifre ile aynı şifreyi girdim.

Not: /var/log/mysqld.log yalnızca /var/log/mysql/error.log diye bir şey

yoktu. Bunun benim için işe yaramadığına dikkat edin:
sudo dpkg-reconfigure mysql-server-5.7

Ayrıca:
sudo dpkg-reconfigure --force mysql-server-5.5

MySQL hizmet dizini yap.
sudo mkdir /var/run/mysqld

MySQL kullanıcısına servis dizinine yazma izni verin.
sudo chown mysql: /var/run/mysqld

Sonra:

  1. mevcut mysqld pid'i öldür
  2. mudoqd'yi sudo / usr / sbin / mysqld ile çalıştır &
  3. run / usr / bin / mysql_secure_installation mysql_secure_installation

    çıktısı

    root @ myServer: ~ # / usr / bin / mysql_secure_installation

    MySQL sunucu dağıtımının güvenliğini sağlama.

    Kullanıcı kökü için şifre girin:

    GEÇERLİ ŞİFRE PLUGIN şifreleri test etmek ve güvenliği artırmak için kullanılabilir. Parolanın gücünü denetler ve kullanıcıların yalnızca yeterince güvenli olan parolaları ayarlamasına olanak tanır. VALIDATE PASSWORD eklentisini kurmak ister misiniz?

    Evet için y | Y, Hayır için hayır tuşlarına basın: hayır Kök için varolan parolayı kullanma. Root şifresi değiştirilsin mi? ((Evet için y | Y, Hayır için başka bir tuşa basın): y

    Yeni Şifre:

    Yeni şifreyi tekrar girin: Varsayılan olarak, bir MySQL kurulumunda anonim bir kullanıcı bulunur ve herkesin kendileri için bir kullanıcı hesabı oluşturmadan MySQL'de oturum açmasına izin verir. Bu sadece test etmek ve kurulumu biraz daha pürüzsüz hale getirmek için tasarlanmıştır. Bir üretim ortamına geçmeden önce bunları kaldırmalısınız.

    Anonim kullanıcılar kaldırılsın mı? (Evet için y | Y, Hayır için başka bir tuşa basın): y Başarılı.

    Normalde, root'un sadece 'localhost'tan bağlanmasına izin verilmelidir. Bu, birinin ağdaki kök parolayı tahmin edememesini sağlar.

    Kök girişine uzaktan izin verilsin mi? (Evet için y | Y, Hayır için başka bir tuşa basın): y Başarılı.

    Varsayılan olarak, MySQL, herkesin erişebileceği 'test' adlı bir veritabanı ile birlikte gelir. Bu aynı zamanda sadece test amaçlıdır ve bir üretim ortamına geçmeden önce kaldırılmalıdır.

    Test veritabanı kaldırılsın mı? (Evet için y | Y, Hayır için başka bir tuşa basın): y

    • Test veritabanı düşüyor ... Başarılı.

    • Test veritabanındaki ayrıcalıklar kaldırılıyor ... Başarılı.

    Ayrıcalık tablolarını yeniden yüklemek, şu ana kadar yapılan tüm değişikliklerin hemen geçerli olmasını sağlayacaktır.

    Ayrıcalık tabloları şimdi yeniden yüklensin mi? (Evet için y | Y, Hayır için başka bir tuşa basın): y Başarılı.

    Hepsi tamam!


0

Aynı sorunu yaşadım ve çözdüm:

# /etc/init.d/mysql stop
# service mysql stop
# mkdir -p /var/run/mysqld
# chown mysql:mysql /var/run/mysqld
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=password('1234') where user='root';

(Burada authentication_stringşifre alanını tutar.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.