Ubuntu 15.10 mysql hatası 1524 - unix_socket


51

Ubuntu 15.10'da, bir noktada (belki bir mariadb kurulumundan ve kaldırmasından sonra) mysql çalışamadı. Görevler açık, ancak sunucu kapalı.

Komutta:

mysql -u root -p

sistem a ile benzer şekilde cevap verir:

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

Oturum açma imkanı yok, eklenti bulunamadı, yapılandırma dosyalarında hata yok (tümü varsayılan).

Kontrole nasıl geri dönülür ve mysql sunucusunun çalıştırılması nasıl yapılır?


Bu hataya aşina değilim ancak bu tartışmaya bakın: lists.launchpad.net/maria-developers/msg08177.html
Jos

@Jos: Bu tartışma, belki de benzer bir durum için bir çözüm sunmuyor. Çok googledim, ancak açığa tam bir çözüm bulamadım. Neyse, çalışan bir cevap yolladım.
Hydra Starmaster

Hata mesajının nedeni hakkında: unix_socket eklentisi MariaDB'nin (MySQL değil) bir parçasıdır ve çalışması için kullanılan hibelerin çalışması için yüklenmelidir: mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD

Yanıtlar:


94

"Unix_socket", mysql kimlik doğrulama işlemiyle çağrıldı (belki veritabanının mariadb'ye kısmen taşınmasıyla ilgili, şimdi kaldırıldı). Her şeyin tekrar işe yaraması için:

sudo su

sonra takip edin:

/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -uroot

Bu, mysql'yi tamamen durduracak, kullanıcı kimlik doğrulamasını atlayacaktır (şifre gerekmeden) ve "root" kullanıcısı ile mysql'ye bağlanacaktır.

Şimdi, mysql konsolunda, mysql yönetimsel db kullanmaya gidin:

use mysql;

Kök şifresini mynewpassword'e (istediğin şekilde değiştir) sıfırlamak için , sadece emin olmak için:

update user set password=PASSWORD("mynewpassword") where User='root';

Ve bu, normal ve çalışan bir şifre yöntemini geri yükleyerek, unix_socket isteğini (ve diğer her şeyi) kaldırarak kimlik doğrulama yönteminin üzerine yazacaktır:

update user set plugin="mysql_native_password";

MySQL konsolundan çıkın:

quit;

Durdurun ve mysql ile ilgili her şeyi başlatın:

/etc/init.d/mysql stop
kill -9 $(pgrep mysql)
/etc/init.d/mysql start

exitSu modunu unutma .

Şimdi mySQL sunucusu çalışıyor ve çalışıyor. Root ile giriş yapabilirsiniz:

mysql -u root -p

ya da ne istersen. Şifre kullanımı aktif.

Bu kadar.


Benim mysqld_safegibi bir seçeneği vardır --skip-grant-tables..what verir?
heemayl

MySQL 5.6.27-0ubuntu1’dayım. Bu seçeneği mysqld --verbose --help
şunlara

2
Bu gitmemi sağladı. Bunun yerine bazı farklılıkları mysqld_safeolan argümanlardan şikayetçi oldum - Skip-Grant-tables yoktu mysqld. Ancak içinde soket dosyaları oluşturamadığından şikayet etti /var/run/mysqld/. Apparmor config'i kontrol ettim ve uygun izinlere sahiptim. Ben gerekiyordu Bunu düzeltmek için mkdir /var/run/mysqld/ve daha sonra tamamen açık izinleri vermek: chmod -R 777 /var/run/mysqld/. Sonra nihayet daemon başlatabilir ve eklentiyi 'mysql_native_password' olarak değiştirebilirim.
dennmat

1
Kullanıcı masamın şifre alanı yok (Ubuntu 16 mysql 5.7.13). Bu SQL kullandım: UPDATE mysql.user SET authentication_string = ŞİFRE ('foobar123'), password_expired = 'N' NEREDE kullanıcı = 'root' AND Host = 'localhost';
Anthony Scaife,

Buradaki talimat özlü ve sorunu çözmeme yardımcı oldu. Teşekkür ederim!
Eduardo B.

11

İşte bunu yapma adımlarım:

/etc/init.d/mysql stop
sudo killall mysqld_safe
sudo killall mysqld
sudo mysqld_safe --skip-grant-tables &
mysql -u root
use mysql;
update user set password=PASSWORD("mynewpassword") where User='root';
update user set plugin="mysql_native_password";
quit;
/etc/init.d/mysql stop
sudo kill -9 $(pgrep mysql)
/etc/init.d/mysql start

1
Şimdi "mysql -u root" komutundan sonra alıyorum: ERROR 1524 (HY000): Eklenti 'root' yüklü değil
dxvargas 28:16

İki UPDATE sorgusunu karıştırmış gibisiniz. Plugin = "root" u kazayla belirlediniz mi?
Adam Plocher
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.