Thứ năm, 07/03/2019 | 00:00 GMT+7

Cách khắc phục sự cố lỗi socket trong MySQL

Hướng dẫn này nhằm phục vụ như một tài nguyên khắc phục sự cố và điểm bắt đầu khi bạn chẩn đoán cài đặt MySQL của bạn . Ta sẽ xem xét một số vấn đề mà nhiều user MySQL gặp phải và cung cấp hướng dẫn để khắc phục sự cố cụ thể.

MySQL quản lý các kết nối đến server database thông qua việc sử dụng tệp socket , một loại file đặc biệt hỗ trợ giao tiếp giữa các quy trình khác nhau. Tệp socket của server MySQL được đặt tên là mysqld.sock và trên hệ thống Ubuntu, nó thường được lưu trữ trong folder /var/run/mysqld/ . Tệp này được tạo bởi dịch vụ MySQL tự động.

Đôi khi, các thay đổi đối với hệ thống hoặc cấu hình MySQL của bạn có thể dẫn đến việc MySQL không thể đọc file socket, ngăn bạn truy cập vào database của bạn . Lỗi socket phổ biến nhất trông giống như sau:

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

Có một số lý do tại sao lỗi này có thể xảy ra và một số cách tiềm năng để giải quyết nó.

Một nguyên nhân phổ biến của lỗi này là dịch vụ MySQL bị dừng hoặc không bắt đầu, nghĩa là nó không thể tạo file socket ngay từ đầu. Để tìm hiểu xem đây có phải là lý do khiến bạn gặp lỗi này hay không, hãy thử khởi động dịch vụ với systemctl :

  • sudo systemctl start mysql

Sau đó, hãy thử truy cập lại dấu nhắc MySQL. Nếu bạn vẫn nhận được lỗi socket , hãy kiểm tra kỹ vị trí nơi cài đặt MySQL của bạn đang tìm kiếm file socket . Thông tin này có thể được tìm thấy trong file mysqld.cnf :

  • sudo nano /etc/mysql/mysql.conf.d/mysql.cnf

Tìm tham số socket trong phần [mysqld] của file này. Nó sẽ trông giống thế này:

/etc/mysql/mysql.conf.d/mysqld.cnf
. . .
[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
. . .

Đóng file này, sau đó đảm bảo file mysqld.sock tồn tại bằng cách chạy ls trên folder mà MySQL dự kiến sẽ tìm thấy nó:

  • ls -a /var/run/mysqld/

Nếu file socket tồn tại, bạn sẽ thấy nó trong kết quả của lệnh này:

Output
.  ..  mysqld.pid  mysqld.sock  mysqld.sock.lock

Nếu file không tồn tại, nguyên nhân có thể là do MySQL đang cố gắng tạo nó, nhưng không có đủ quyền để thực hiện . Bạn có thể đảm bảo các quyền chính xác được cung cấp bằng cách thay đổi quyền sở hữu của folder thành user và group mysql :

  • sudo chown mysql:mysql /var/run/mysqld/

Sau đó, đảm bảo user mysql có quyền thích hợp đối với folder . Đặt chúng thành 775 sẽ hoạt động trong hầu hết các trường hợp:

  • sudo chmod -R 755 /var/run/mysqld/

Cuối cùng, khởi động lại dịch vụ MySQL để nó có thể cố gắng tạo lại file socket:

  • sudo systemctl restart mysql

Sau đó, hãy thử truy cập lại dấu nhắc MySQL. Nếu bạn vẫn gặp phải lỗi socket, có thể có vấn đề sâu hơn với version MySQL của bạn, trong trường hợp đó, bạn nên xem lại log lỗi để xem liệu nó có thể cung cấp bất kỳ manh mối nào không.


Tags:

Các tin liên quan

Cách cho phép truy cập từ xa vào MySQL
2019-03-07
Cách sửa chữa bảng bị hỏng trong MySQL
2019-03-07
Cách giải quyết sự cố trong MySQL
2019-03-07
Cách khắc phục sự cố truy vấn MySQL
2019-03-07
Giới thiệu về Truy vấn trong MySQL
2018-10-17
Cách cài đặt MySQL mới nhất trên Debian 9
2018-09-05
Cách đặt lại mật khẩu gốc MySQL hoặc MariaDB của bạn trên Ubuntu 18.04
2018-09-04
Cách tạo một cụm MySQL nhiều node trên Ubuntu 18.04
2018-07-26
Cách cài đặt MySQL mới nhất trên Ubuntu 18.04
2018-07-12
Cách di chuyển thư mục dữ liệu MySQL đến vị trí mới trên Ubuntu 18.04
2018-07-06