MySQL başarısız oluyor: mysql "ERROR 1524 (HY000): 'auth_socket' eklentisi yüklenmemiş"


128

Yerel ortamım:

  • taze Ubuntu 16.04
  • PHP 7 ile
  • yüklü MySQL 5.7 ile

    sudo apt-get install mysql-common mysql-server

MySQL'e (CLI aracılığıyla) giriş yapmaya çalıştığımda:

mysql -u root -p

3 adımda döngüsel bir sorunla karşılaştım.

1) Birincisi bazı soket sorunuydu

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

Çözüm: PC yeniden başlatılıyor.

Bu da başka bir hataya yol açtı:

2) Erişim reddedildi

ERROR 1698 (28000): Access denied for user 'root'@'localhost'.

Olası sorun? "Root" kullanıcısı için yanlış şifre!

Çözüm: Bu eğitimle kök parolasını sıfırlayın .

Doğru şifre ve çalışma soketi ile son hata gelir.

3) Yanlış kimlik doğrulama eklentisi

mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"

Burada durdum ya da bir şekilde tekrar 1) 'e gittim.


1
Size iyi geldiğine sevindim :) Bize ulaştığınız için teşekkürler!
Tomáš Votruba

Yanıtlar:


375

Bir çözüm buldum!

2. adımda kök parolasını sıfırlarken, kimlik doğrulama eklentisini şu şekilde değiştirin mysql_native_password:

use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root';  # THIS LINE

flush privileges;
quit;

Bu, başarıyla giriş yapmama izin verdi!


Tam kod çözümü

1. bash komutlarını çalıştırın

1. önce bu bash komutlarını çalıştırın

sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql

2. sonra mysql komutlarını çalıştırın => kopyalayın bunu cli'ye elle yapıştırın

use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user

flush privileges;
quit;

3. daha fazla bash komutu çalıştırın

sudo /etc/init.d/mysql stop 
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p 

4. Soket sorunu (yorumlarınızdan)

Bir soket hatası gördüğünüzde , bir topluluk 2 olası çözümle geldi:

sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &

(@Cerin'e teşekkürler)

Veya

mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld  

(@Peter Dvukhrechensky'ye teşekkürler)


Kör yollar ve olası kenar hataları

Localhost yerine 127.0.0.1 kullanın

mysql -uroot # "-hlocalhost" is default

"Eksik dosya" ya da slt hatasına yol açabilir.

mysql -uroot -h127.0.0.1

Daha iyi çalışıyor.

Soket sorununu atla

mysqld.sockDosya oluşturmanın , erişim haklarını değiştirmenin veya sembolik bağlantı kurmanın birçok yolunu buldum . Sonuçta mesele bu değildi.

my.cnfDosyayı atla

Sorun da orada değildi. Emin değilseniz bu size yardımcı olabilir .


3
Bunun için teşekkür ederim. Bu aynı zamanda mysql root pass'in nasıl sıfırlanacağına dair mükemmel bir cevaptır, bu yüzden zaten soket sorununa girmeden önce ortaya çıkmasına yardımcı olmak için başlığı biraz düzenlemek isteyebilirsiniz.
Wtower

1
Yardımcı olmasına sevindim. Kaynak mesajı saklamak için başlığı nasıl düzenlersiniz? Çözümün şifre sıfırlama gerektirdiğini anlıyorum, ancak başlıktaki sorunu çözmüyor. Bu, daha fazla noktanın daha karmaşık başarısızlığıdır. Kök şifre sıfırlama için buraya giderim: stackoverflow.com/a/6401963/1348344
Tomáš Votruba

1
@matanster Gerçekten değil, bu saf adım adım deneme-başarısızlık inşa edilmiştir. Hangi işletim sistemini kullanıyorsunuz?
Tomáš Votruba

8
Mysqld_safe aramanız yanlış. Bunun yerine sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld; sudo mysqld_safe --skip-grant-tables &
koşmanız

3
Lütfen yanıta soket sorununun olası bir çözümünü ekleyin. Bunun gibi mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqldBirinin zamanını kurtarabilir
Peter Dvukhrechensky

41

Benim için çalıştığını aşağıdaki gibi deneyebilirsiniz.

Sunucuyu başlat:

sudo service mysql start

Şimdi, çorap klasörüne gidin:

cd /var/run

Çorabı yedekleyin:

sudo cp -rp ./mysqld ./mysqld.bak

Sunucuyu durdur:

sudo service mysql stop

Çorabı geri yükleyin:

sudo mv ./mysqld.bak ./mysqld

Mysqld_safe'i başlatın:

 sudo mysqld_safe --skip-grant-tables --skip-networking &

Init mysql kabuğu:

 mysql -u root

Şifre değiştir:

Bu nedenle, önce veritabanını seçin

mysql> use mysql;

Şimdi iki sorgunun altına girin:

mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root'; 

Şimdi her şey yoluna girecek.

mysql> flush privileges;
mysql> quit;

Kontrol için:

mysql -u root -p

bitmiş!

N.B, After login please change the password again from phpmyadmin

Şimdi kontrol et hostname/phpmyadmin

Username: root

Password: 123456

Daha fazla ayrıntı için lütfen Ubuntu'da unutulan şifre phpmyadmin nasıl sıfırlanır'ı kontrol edin


2
sadece bu benim için çalışıyor! yedekleme ve geri yükleme soketi oldukça akıllı
touhid udoy

1
HATA 1045 (28000): "Tamamlandı!"
123456

Phpmyadmin'de açıklanan adımları uygulayarak çözdüm (yani parolayı değiştir, eklentiyi değiştir). Bazı nedenlerden dolayı 'set authentication_string = password (...)' çalışmayı durdurdu (Hata 1045 (28000): Erişim reddedildi ...).
Fil

12

mysqlVarsayılan olarak komut MySQL bağlanmak için UNIX soketlerini kullanır.

MariaDB kullanıyorsanız , sunucu tarafında Unix Soket Kimlik Doğrulama Eklentisini yüklemeniz gerekir .

[mysqld]Yapılandırmayı şu şekilde düzenleyerek yapabilirsiniz :

[mysqld]
plugin-load-add = auth_socket.so

Dağıtıma bağlı olarak, yapılandırma dosyası genellikle /etc/mysql/veya/usr/local/etc/mysql/


1
Bu. Diğer tüm yanıtlar, hatanın üstesinden nasıl gelineceğini açıklar. Bu, nasıl ÇÖZÜLECEĞİNİ açıklıyor.
2019

MariaDB 10.4.3 ve sonraki sürümlerindeyseniz, unix_socket kimlik doğrulama eklentisi varsayılan olarak yüklenmelidir, ancak "kullanıcınızı" güncellerken eklenti = "unix_socket" yerine yanlış bir şekilde plugin = "auth_socket" olarak atıfta bulunursanız, bu biraz yanıltıcı mesajı alacak. Cevabım bunu nasıl mahvettiğimi detaylandırıyor.
Rohn Adams

9

Aşağıdaki bazı adımları deneyebilirsiniz:

Mysql Service 1st'i Durdurun sudo /etc/init.d/mysql stop

Şifre olmadan root olarak giriş yapın sudo mysqld_safe --skip-grant-tables &

Mysql terminaline giriş yaptıktan sonra komutları daha fazla çalıştırmanız gerekir:

use mysql;

UPDATE mysql.user SET authentication_string=PASSWORD('solutionclub3@*^G'), plugin='mysql_native_password' WHERE User='root';

flush privileges;

sudo mysqladmin -u root -p -S /var/run/mysqld/mysqld.sock shutdown

Mysql sunucunuzu yeniden başlattıktan sonra Hala hatayla karşılaşıyorsanız şu adresi ziyaret etmelisiniz: MySQL 5.7 kök şifresini sıfırlayın Ubuntu 16.04


8

Ubuntu 18.04 ve mysql 5.7 için

  • Aşama 1: sudo mkdir /var/run/mysqld;

    Adım 2: sudo chown mysql /var/run/mysqld

    3. adım: sudo mysqld_safe --skip-grant-tables& çık (takılı kalırsa çıkı kullan)

şifresiz mysql'e giriş yapın

  • 4. adım: sudo mysql --user=root mysql

    Adım 5: SELECT user,authentication_string,plugin,host FROM mysql.user;

    6. adım: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'

şimdi giriş yap

  • mysql -u root -p <root>

1
ancak geçişi root için hangi adımda ayarlayabilirim? çünkü denedim $ mysql -u root -pama erişim henüz reddedildi. Access denied for user 'root'@'localhost' (using password: YES)'EVET' şifresini girmeye çalıştım
AlexNikonov

4

Deneyin: sudo mysql_secure_installation

Ubuntu 18.04'te çalışmalar


1

Yaptığım aynı hatayı yaptıktan sonra birisi buraya gelirse:

  1. plugin="mysql_native_password"Geçici olarak konumuna geçildi . Görevlerimi gerçekleştirdim.
  2. "Auth_socket" eklentisine geri dönmeyi denedi, ancak yanlış bir şekilde başvurdu plugin="auth_socket"ve sonuçlandımysql "ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded"
  3. Bu hatayı düzeltmek için giriş yapmanın bir yolu olmadığından, mysql'yi durdurmam ve mysql_safeuygun eklentiye geçmek için kimlik doğrulamasını atlamak zorunda kaldımplugin="unix_socket"

Umarım bu, orijinal posterin hata mesajını alırsa birisine biraz zaman kazandırır, ancak asıl neden eklenti adını zedelemektir, aslında MariaDB belgelerine göre "auth_socket" eklentisinin varlığından yoksun değil :

MariaDB 10.4.3 ve sonraki sürümlerde, unix_socket kimlik doğrulama eklentisi varsayılan olarak yüklenir ve varsayılan olarak 'root' @ 'localhost' kullanıcı hesabı tarafından kullanılır.


-7

Aşağıdaki komutları deneyebilirsiniz:

hduser@master:~$ sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.
hduser@master:~$ sudo /etc/init.d/mysql start
[ ok ] Starting mysql (via systemctl): mysql.service.

Bunu biraz daha açıklayabilir misin? Sunucuyu yeniden başlatmak verilen hata mesajını nasıl çözer?
Nico Haase
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.