Помилка Ubuntu 15.10 mysql 1524 - unix_socket


51

У Ubuntu 15.10, в момент (можливо після встановлення та видалення mariadb), mysql не змогла працювати. Завдання вгору, але сервер - вниз.

За командою:

mysql -u root -p

відповідь системи на зразок:

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

Ніякого способу входу, плагіну не знайдено, помилок у файлах конфігурації (все за замовчуванням).

Як повернути контроль і змусити запустити сервер mysql?


Я не знайомий з цією конкретною помилкою, але дивіться цю дискусію: list.launchpad.net/maria-developers/msg08177.html
Жос

@Jos: ця дискусія, можливо, для подібної ситуації не пропонує рішення. Я багато в google, але не знайшов рішення, яке було б викритим. У всякому разі, я опублікував робочу відповідь.
Hydra Starmaster

Про причину повідомлення про помилку: Плагін unix_socket є частиною MariaDB (не MySQL) і його потрібно завантажити, щоб гранти з його допомогою працювали: mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD

Відповіді:


94

"Unix_socket" був викликаний процесом аутентифікації mysql (можливо, пов'язаний з частковою міграцією бази даних до mariadb, тепер видалений). Щоб повернути всі матеріали на роботу, виконайте такі дії:

sudo su

потім слід:

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

Це повністю зупинить mysql, обійде аутентифікацію користувача (не потрібен пароль) і підключиться до mysql з користувачем "root".

Тепер у консолі mysql перейдіть за допомогою mysql administrator db:

use mysql;

Щоб скинути кореневий пароль на mynewpassword (змінити його за своїм бажанням), просто переконайтесь у цьому:

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

І цей метод замінить метод аутентифікації, видалить запит unix_socket (та все інше), відновивши звичайний та робочий метод пароля:

update user set plugin="mysql_native_password";

Вихід з консолі mysql:

quit;

Зупиніть і почніть все, що стосується mysql:

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

Не забувайте exitпро режим su.

Тепер сервер mySQL працює і працює. Ви можете увійти в систему за допомогою кореня:

mysql -u root -p

або що завгодно. Використання пароля діє.

Це воно.


У мене mysqld_safeнемає варіанту, як --skip-grant-tables.. що дає?
heemayl

Я на mysqld 5.6.27-0ubuntu1. Ви можете знайти цей варіант, переглянувши:mysqld --verbose --help
Hydra Starmaster

2
Це мене змусило. З деякими відмінностями, замість mysqld_safeяких скаржився на аргумент - таблиць -skip-grant не існувало, я використовував mysqld. Однак він скаржився, що не може створити файли сокетів /var/run/mysqld/. Я перевірив конфігурацію apparmor, і він мав належні дозволи. Щоб виправити це , я повинен був , mkdir /var/run/mysqld/а потім дати повністю відкриті дозволу: chmod -R 777 /var/run/mysqld/. Тоді я нарешті міг запустити демон і змінити плагін на 'mysql_native_password'.
dennmat

1
У моїй таблиці користувачів немає поля пароля (Ubuntu 16 mysql 5.7.13). Я використав цей SQL: UPDATE mysql.user SET автентифікація_string = PASSWORD ('foobar123'), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';
Ентоні Скайф

Інструкція тут коротка, і допомогла мені вирішити проблему. Дякую!
Едуардо Б.

11

Ось такі мої кроки:

/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
Тепер після "mysql -u root" я отримую: ПОМИЛКА 1524 (HY000): плагін 'root' не завантажується
dxvargas

Це здається, що ви змішали два запити UPDATE. Ви встановили плагін = "root" випадково?
Адам Плочер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.