Lỗi Ubuntu 15.10 mysql 1524 - unix_socket


51

Trên Ubuntu 15.10, tại một thời điểm (có thể sau khi cài đặt và gỡ bỏ mariadb), mysql không thể hoạt động. Nhiệm vụ đã lên, nhưng máy chủ ngừng hoạt động.

Theo lệnh:

mysql -u root -p

hệ thống trả lời như:

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

Không có cách nào để đăng nhập, không tìm thấy plugin, không có lỗi trong tập tin cấu hình (tất cả đều mặc định).

Làm thế nào để lấy lại quyền kiểm soát và làm cho máy chủ mysql chạy?


Tôi không quen với lỗi đặc biệt này nhưng hãy xem cuộc thảo luận này : lists.launchpad.net/maria-developers/msg08177.html
Jos

@Jos: cuộc thảo luận đó, có thể cho một tình huống tương tự, không đưa ra giải pháp. Tôi đã googled rất nhiều, nhưng tôi đã không tìm thấy một giải pháp hoàn chỉnh tiếp xúc. Dù sao, tôi đã đăng một câu trả lời làm việc.
Hydra Starmaster

Về lý do của thông báo lỗi: Plugin unix_socket là một phần của MariaDB (không phải MySQL) và cần được tải để cấp các khoản tài trợ sử dụng nó để hoạt động: mariadb.com/kb/en/l Library / authentication-plugin-unix-socket
JonnyJD

Câu trả lời:


94

"Unix_socket" đã được gọi bởi quá trình xác thực mysql (có thể liên quan đến việc di chuyển một phần cơ sở dữ liệu sang mariadb, hiện đã bị xóa). Để lấy lại mọi thứ hoạt động, hãy đi su:

sudo su

sau đó làm theo:

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

Điều này sẽ hoàn toàn dừng mysql, bỏ qua xác thực người dùng (không cần mật khẩu) và kết nối với mysql với "root" người dùng.

Bây giờ, trong bảng điều khiển mysql, hãy sử dụng db quản trị mysql:

use mysql;

Để đặt lại mật khẩu root thành mynewpassword (thay đổi mật khẩu theo ý muốn của bạn), chỉ cần chắc chắn về nó:

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

Và cái này sẽ ghi đè phương thức xác thực, xóa yêu cầu unix_socket (và mọi thứ khác), khôi phục phương thức mật khẩu bình thường và đang hoạt động:

update user set plugin="mysql_native_password";

Thoát khỏi bảng điều khiển mysql:

quit;

Dừng lại và bắt đầu mọi thứ liên quan đến mysql:

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

Đừng quên exitchế độ su.

Bây giờ máy chủ myQuery đã hoạt động. Bạn có thể đăng nhập bằng root:

mysql -u root -p

hoặc bất cứ điều gì bạn muốn. Sử dụng mật khẩu là hiệu quả.

Đó là nó.


Của tôi mysqld_safekhông có lựa chọn như --skip-grant-tables.. những gì cho?
heemayl

Tôi đang dùng mysqld 5.6.27-0ubfox1. Bạn sẽ thấy tùy chọn đó nhìn vào:mysqld --verbose --help
Hydra Starmaster

2
Điều này đã cho tôi đi. Với một số khác biệt thay vì mysqld_safephàn nàn, đối số - các bảng-Grant-Grant không tồn tại mà tôi đã sử dụng mysqld. Tuy nhiên, nó tiếp tục phàn nàn rằng nó không thể tạo ra các tập tin ổ cắm /var/run/mysqld/. Tôi đã kiểm tra cấu hình apparmor và nó có quyền thích hợp. Để khắc phục điều này tôi đã phải mkdir /var/run/mysqld/và sau đó cung cấp quyền mở hoàn toàn : chmod -R 777 /var/run/mysqld/. Sau đó, tôi cuối cùng cũng có thể bắt đầu trình nền và thay đổi plugin thành 'mysql_native_password'.
dennmat

1
Bảng người dùng của tôi không có trường mật khẩu (Ubuntu 16 mysql 5.7.13). Tôi đã sử dụng SQL này: CẬP NHẬT mysql.user SET xác thực_ chuỗi = PASSWORD ('foobar123'), password_Exired = 'N' WHERE User = 'root' AND Host = 'localhost';
Anthony Scaife

Các hướng dẫn ở đây ngắn gọn và giúp tôi giải quyết vấn đề. Cảm ơn bạn!
Eduardo B.

11

Đây là các bước của tôi để làm điều này:

/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
Bây giờ sau khi "mysql -u root" tôi nhận được: ERROR 1524 (HY000): Plugin 'root' không được tải
dxvargas

Có vẻ như bạn đã trộn lẫn hai truy vấn CẬP NHẬT. Bạn đã đặt plugin = "root" một cách tình cờ?
Adam Plocher
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.