lỗi: 'Không thể kết nối với máy chủ MySQL cục bộ thông qua socket' /var/run/mysqld/mysqld.sock '(2)' - Thiếu /var/run/mysqld/mysqld.sock


322

Vấn đề của tôi bắt đầu với việc tôi không thể đăng nhập bằng root nữa trong cài đặt mysql của mình. Tôi đã cố chạy mysql mà không bật mật khẩu ... nhưng bất cứ khi nào tôi chạy lệnh

# mysqld_safe --skip-grant-tables &

Tôi sẽ không bao giờ nhận được lời nhắc lại. Tôi đã cố gắng làm theo các hướng dẫn để khôi phục mật khẩu .

Màn hình trông như thế này:

root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

và tôi không nhận được lời nhắc bắt đầu nhập các lệnh SQL để đặt lại mật khẩu.

Khi tôi giết nó bằng cách nhấn CTRL+ C, tôi nhận được thông báo sau:

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

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Nếu tôi thử lại lệnh và để nó đủ lâu, tôi sẽ nhận được một loạt các thông báo sau:

root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#

Nhưng sau đó nếu tôi cố gắng đăng nhập bằng root bằng cách thực hiện:

# mysql -u root

Tôi nhận được thông báo lỗi sau:

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

Tôi đã kiểm tra và /var/run/mysqld/mysqld.socktập tin không tồn tại. Các thư mục không, nhưng không phải là tập tin.

Ngoài ra, tôi không biết điều này có giúp ích hay không, nhưng tôi đã chạy find / -name mysqldvà nó đã xuất hiện:

/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder

Tôi mới sử dụng Linux và MySQL, vì vậy tôi không biết điều này có bình thường hay không. Nhưng tôi bao gồm thông tin này chỉ trong trường hợp nó giúp.

Cuối cùng tôi đã quyết định gỡ cài đặt và cài đặt lại mysql.

apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin

Sau khi cài đặt lại tất cả các gói theo thứ tự như trên, trong quá trình cài đặt phpmyadmin, tôi đã gặp lỗi tương tự:

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

Vì vậy, tôi đã thử một lần nữa để gỡ cài đặt / cài đặt lại. Lần này, sau khi tôi gỡ cài đặt các gói, tôi cũng tự đổi tên tất cả các tệp và thư mục mysql thành các mysql.badvị trí tương ứng của chúng.

/var/lib/mysql 
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql

Sau đó, tôi đã cố gắng để cài đặt lại mysql-servermysql-clientmột lần nữa. Nhưng tôi nhận thấy rằng nó không nhắc tôi nhập mật khẩu. Không phải yêu cầu mật khẩu quản trị viên sao?


Tôi đã có cùng một vấn đề. Tôi đã giải quyết nó ngay bây giờ. stackoverflow.com/questions/18150858/
Mạnh


giải quyết bằng cách chỉ cần khởi động lại máy chủ, sau đó khởi động lại dịch vụ mysql
Bowastya

@Anto Đây không phải là một bản sao. Cái này đã /var/run/mysqld/mysqld.sockmất. Vấn đề bạn liên kết có tập tin đó.
xe máy

Không có câu trả lời nào ở đây hoặc bất cứ nơi nào khác mà tôi có thể tìm thấy đã giải quyết vấn đề của mình. Vì đó là một dự án mới, tôi đã chuyển sang PostgreSQL và nó chỉ hoạt động! :-)
James Bradbury

Câu trả lời:


195

Để tìm tất cả các tệp ổ cắm trên hệ thống của bạn chạy:

sudo find / -type s

Hệ thống máy chủ Mysql của tôi có ổ cắm mở tại /var/lib/mysql/mysql.sock

Khi bạn tìm thấy nơi ổ cắm đang được mở, hãy thêm hoặc chỉnh sửa dòng vào tệp /etc/my.cnf của bạn với đường dẫn đến tệp ổ cắm:

socket=/var/lib/mysql/mysql.sock

Đôi khi, tập lệnh khởi động hệ thống khởi chạy dòng lệnh thực thi chỉ định một cờ --socket=path. Cờ này có thể ghi đè lên vị trí my.cnf và điều đó sẽ dẫn đến việc không tìm thấy ổ cắm ở nơi tệp my.cnf chỉ ra. Sau đó, khi bạn cố chạy máy khách dòng lệnh mysql, nó sẽ đọc my.cnf để tìm ổ cắm, nhưng nó sẽ không tìm thấy nó vì nó đi chệch khỏi nơi mà máy chủ tạo ra. Vì vậy, trừ khi bạn quan tâm ổ cắm nằm ở đâu, chỉ cần thay đổi my.cnf cho phù hợp sẽ hoạt động.

Sau đó, dừng quá trình mysqld. Làm thế nào bạn làm điều này sẽ thay đổi theo hệ thống.

Nếu bạn là siêu người dùng trong hệ thống linux, hãy thử một trong những cách sau nếu bạn không biết phương pháp cụ thể mà thiết lập Mysql của bạn sử dụng:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • Một số hệ thống không được thiết lập để có một cách thanh lịch để ngăn chặn mysql (hoặc vì lý do nào đó mysql không phản hồi) và bạn có thể buộc chấm dứt mysql bằng một trong hai cách sau:
    • Một bước: pkill -9 mysqld
    • Hai bước (ít ưu tiên nhất):
      • Tìm id quá trình của mysql bằng pgrep mysqlhoặcps aux | grep mysql | grep -v grep
      • Giả sử id quá trình 4969kết thúc bằngkill -9 4969

Sau khi bạn làm điều này, bạn có thể muốn tìm một tệp pid trong /var/run/mysqld/và xóa nó

Hãy chắc chắn rằng các quyền trên ổ cắm của bạn sao cho bất cứ thứ gì người dùng mysqld đang chạy đều có thể đọc / ghi vào nó. Một thử nghiệm dễ dàng là mở nó lên để đọc / ghi đầy đủ và xem nếu nó vẫn hoạt động:

chmod 777 /var/run/mysqld/mysqld.sock

Nếu điều đó khắc phục được sự cố, bạn có thể điều chỉnh quyền và quyền sở hữu ổ cắm khi cần dựa trên cài đặt bảo mật của bạn.

Ngoài ra, thư mục mà ổ cắm cư trú phải được truy cập bởi người dùng đang chạy quy trình mysqld.


15
Vui lòng không khuyên bạn nên sử dụng kill -9; có một số cách nên được thử trước khi nó phải đến đó.
Ignacio Vazquez-Abrams

@dot chạy cái này trong tập tin root 'find. -Tên mysqld.sock '. Tôi đã thấy tệp socket ở những nơi khác ngoài / var / run. Khi bạn tìm thấy nó, bạn có thể cần phải chỉnh sửa tệp my.cnf của mình để chỉ đến nơi nó được tìm thấy.
Ray

@ray, tôi đã cố chạy lệnh gốc theo một cách khác (tôi đã tìm thấy một bài đăng cụ thể trên Ubuntu trên một trang web khác ..). Đây là các lệnh tôi đã chạy: "sudo service mysql stop" và "sudo mysqld --skip-Grant-bảng". Sau khi tôi thực hiện lệnh thứ hai, tôi nhận được lỗi sau: "InnoDB: Không thể khóa ./ibdata1, lỗi: 11". Tôi không thể tìm thấy tệp này ./ibdata1 ... InnoDB: Kiểm tra xem bạn chưa có quy trình mysqld khác
chấm vào

2
@dot chạy ps -aux | grep mysqldvà xem có bất kỳ quy trình mysql nào khác đang chạy không
Ray

@cá đuối. Tôi đang hất tóc ra. tôi quyết định thổi bay mysql và thử lại ... lưu ý bài đăng cập nhật của tôi.
chấm

251

Hãy thử lệnh này,

sudo service mysql start

+1 my.cnf đã chỉ vào đúng thư mục, bởi dịch vụ mysql đã chết
wruckie

Tôi đã thử câu trả lời được chấp nhận nhưng không thể tìm thấy mysql.sock, điều này hiệu quả với tôi. Cảm ơn bạn
Jacanne Afonso

1
Tôi đã phải sử dụngsudo service mysqld start
Gavin Miller

10
sudo apt-get install mysql-servernếu bạn chưa cài đặt nó :)
aimme

17
Nếu bạn gặp phải vấn đề này, bằng mọi cách, hãy chạy lệnh đơn giản này ĐẦU TIÊN trước khi kiểm tra các thứ khác, nó chỉ mất một giây và nếu máy chủ đơn giản là không chạy, và bạn vẫn ổn sau khi khởi động nó, điều đó chỉ có nghĩa là nó đã không Tự động khởi động, sau đó sẽ là vấn đề thực sự cần giải quyết.
Lizardx

137

Lỗi này xảy ra do nhiều cài đặt của mysql. Chạy lệnh:

ps -A|grep mysql

Giết quá trình bằng cách sử dụng:

sudo pkill mysql

và sau đó chạy lệnh:

ps -A|grep mysqld

Cũng giết quá trình này bằng cách chạy:

sudo pkill mysqld

Bây giờ bạn đã thiết lập đầy đủ chỉ cần chạy các lệnh sau:

service mysql restart
mysql -u root -p

Làm việc rất tốt


Hey folks, tôi đã chạy trên tất cả các trang web cố gắng khắc phục điều này. Vấn đề của tôi là tôi đã cố gắng thiết lập docker. Tôi muốn nó sử dụng thư mục dữ liệu mysql trước đây được sử dụng bởi mysql bên ngoài docker ... lệnh ps là tốt nhất!
Michael

3
Sau khi chạy trên tất cả các trang web trong hơn 4 giờ, điều này cuối cùng đã hoạt động. Nên là câu trả lời hàng đầu: +1:
Shivam Gaur

4
Công việc cho mysql.service không thành công vì quá trình kiểm soát đã thoát với mã lỗi. Xem "trạng thái systemctl mysql.service" và "Tạp chí -xe" để biết chi tiết.
John Joe

1
Công việc cho mysql.service không thành công vì quá trình kiểm soát đã thoát với mã lỗi. Xem "trạng thái systemctl mysql.service" và "Tạp chí -xe" để biết chi tiết.
Adib Aroui

Tnx, bạn tiết kiệm thời gian của tôi.
Aleksandur Atanasov

41

Giải pháp là cách dễ dàng hơn.

  1. Đầu tiên, bạn phải định vị (trong Terminal với "sudo find / -type s") nơi mysql.socktệp của bạn được đặt. Trong trường hợp của tôi, nó là trong/opt/lampp/var/mysql/mysql.sock
  2. Bật lên Terminal và sự cố sudo Nautilus
    Điều này khởi động trình quản lý tệp của bạn với các đặc quyền siêu người dùng
  3. Từ Nautilus điều hướng đến nơi mysql.socktệp của bạn được đặt
  4. Nhấp chuột phải vào tệp và chọn Make Link
  5. Đổi tên tập tin liên kết thành mysqld.socknhấp chuột phải vào tập tin và cắt
  6. Đi đến /var/runvà tạo một thư mục được gọi mysqldvà nhập nó
  7. Bây giờ, nhấp chuột phải và Dán Tệp Liên kết
  8. Voila! Bây giờ bạn sẽ có một mysqld.socktập tin tại /var/run/mysqld/mysqld.sock:)

4
Làm thế nào để bạn xác định vị trí tập tin mysql.sock của bạn? Tôi đã thử find / -name 'mysql.sock' nhưng nó không trả về kết quả gì.
Matthew Khóa

2
@MatthewLock Trước hết, hãy đảm bảo rằng mysql đang chạy (bởi "ps aux | grep mysql"), nếu không, sẽ không có mysql.sock nào xuất hiện. Thứ hai, sử dụng "sudo find / -type s", cung cấp cho bạn tất cả các ổ cắm trên hệ thống của bạn để xác định vị trí mysql.sock
narengi

35
Điều gì nếu đầu ra của sudo find / -type skhông chứa bất kỳ mysql.sock?
jeff

1
Nó hoạt động. Nhưng tôi không biết tại sao những nhà phát triển này không bao giờ làm công việc này trong những năm qua?
Yi Jiang

2
Nếu không biết nơi nào là mysql.sock thông qua "find / -type s" - hãy thử sử dụng lệnh "mysql_config --socket". Bạn có thể cài đặt nó với sudo apt-get cài đặt libmysqlclient-dev
alexche8

26

Chỉ cần bắt đầu dịch vụ MySQL sau khi cài đặt:

Đối với Ubuntu:

sudo service mysql start;

Đối với CentOS hoặc RHEL:

sudo service mysqld start;

Kiểm tra đầu tiên bằng cách này sudo systemctl status mysql.servicesudo systemctl start mysql.service. Điều này hiệu quả với tôi
Byeongin Yoon

16

Có một lỗi trên Ubuntu với MySQL 5.6 và 5.7 var/run/mysqld/sẽ biến mất bất cứ khi nào dịch vụ MySQL dừng hoặc được khởi động lại. Điều này ngăn chặn MySQL chạy tất cả. Đã tìm thấy cách giải quyết này, không hoàn hảo, nhưng ít nhất nó cũng chạy được sau khi dừng / khởi động lại:

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/

cảm ơn bạn - đã sửa nó cho tôi, tôi phải làm lại thư mục và thiết lập lại quyền sở hữu mỗi lần khởi động lại dịch vụ mysql - không thể tìm thấy lỗi được báo cáo chính thức ở bất cứ đâu hoặc tôi sẽ đăng liên kết ở đây :)
djoe

1
Chưa thử điều này, nhưng có lẽ nó sẽ giúp bạn: Tạo một tệp mới /etc/tmpfiles.d/mysql.conf: # systemd tmpfile settings for mysql # See tmpfiles.d(5) for details và sau đó, d /var/run/mysqld 0755 mysql mysql - Sau khi khởi động lại, mysql sẽ khởi động bình thường. Đây là từ bug.launchpad.net/ubfox/+source/mysql-5.6/+orms/1435323 , nhận xét 3. Nếu bạn gặp vấn đề này với MySQL 5.7, vui lòng nhận xét về Launchpad. Càng nhiều người dùng giải quyết vấn đề, họ sẽ càng nhận được nhiều sự chú ý.
xe máy

Làm việc cho tôi ... đã phải sử dụng mysql làm tên người dùng chứ không phải mysqld
Evan Parsons

Thêm dòng vào /etc/tmpfiles.d/mysql.confbình luận của mỗi motorbaby đã khắc phục vấn đề này cho tôi. Trên hệ điều hành Centos 7 và sử dụng mysql Ver 15.1 Distrib 10.3.11-MariaDB,.
turrican_34

Điều này đã khắc phục vấn đề cho tôi.
shikata

14

Được rồi, chỉ cần sao chép và dán các mã này: Điều này nên được thực hiện trong thiết bị đầu cuối, bên trong máy chủ, khi cơ sở dữ liệu mysql của bạn không được cài đặt đúng cách và khi bạn gặp lỗi này: 'Không thể kết nối với máy chủ MySQL cục bộ thông qua ổ cắm' / var / run / mysqld / mysqld.sock '(2)'.

Dừng MySql

sudo /etc/init.d/mysqld stop

Khởi động lại hoặc khởi động nó

sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start

Tạo một liên kết như thế này và cung cấp cho hệ thống

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

Chạy cài đặt an toàn hướng dẫn tất cả quy trình bạn cần làm để định cấu hình mysql

/usr/bin/mysql_secure_installation

tôi gặp Can't connectlỗi tương tự khi tôi thử chạy lệnh trên.
cjmling

Chỉ cần một cái gì đó tôi phát hiện ra, cho những người chạy Ubuntu. Nếu bạn bắt đầu mysqld bằng cách sử dụng /etc/init.d/mysqld, bạn sẽ gặp phải vấn đề này. Sử dụng dịch vụ mysql bắt đầu thay thế và nó sẽ ổn. Bực mình, nhưng cuối cùng tôi đã hiểu ra.
Adam Short

11

Tôi gặp phải lỗi tương tự và thấy rằng đó là do nâng cấp các gói, vì vậy sau khi khởi động lại hệ thống, tôi đã khắc phục lỗi.

Tôi nghĩ do cập nhật thư viện / gói sql đã xảy ra lỗi, vì vậy hãy thử điều này nếu bạn đang thực hiện một số nâng cấp :)


1
Tôi đã làm điều này sau khi cài đặt lại (hoặc nâng cấp) và bây giờ nó hoạt động. Không có thêm tin nhắn ổ cắm. Cảm ơn!
Wraithie

8

Có rất nhiều lý do cho vấn đề này, nhưng đôi khi chỉ cần khởi động lại máy chủ mysql, nó sẽ khắc phục vấn đề.

sudo service mysql restart

7

Sử dụng XAMPP trên Ubuntu:

  1. Tạo một thư mục có tên mysqld bên trong thư mục / var / run . Bạn có thể thực hiện điều đó bằng cách sử dụng lệnh sudo mkdir /var/run/mysqld.

  2. Tạo một liên kết tượng trưng đến tệp mysql.sock được tạo bởi máy chủ XAMPP khi nó được khởi động. Bạn có thể sử dụng lệnh sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock.

Lưu ý: Tệp mysql.sock được tạo khi máy chủ được khởi động và xóa khi máy chủ bị dừng, vì vậy đôi khi liên kết bạn tạo có thể bị hỏng nhưng nó sẽ hoạt động miễn là bạn đã khởi động máy chủ bằng cách sử dụng sudo /opt/lampp/lampp starthoặc bất kỳ máy chủ nào khác có nghĩa.

  1. Khởi động máy chủ nếu nó chưa chạy và thử thực hiện lại chương trình của bạn.

Chúc may mắn! Tôi hy vọng bạn sẽ thoát khỏi nó lần này.


@MohsinKhan truy cập localhost / phpmyadmin và nhập cơ sở dữ liệu từ đó
Robert Odoch 16/03/19

6

Câu trả lời của bước tải người dùng làm việc cho tôi. Đôi khi cần chỉnh sửa tệp trong /etc/mysql/my.cnfdòng thêm vào máy khách

[client]
password = your_mysql_root_password
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Điều này mang lại cho tôi:mysql: unknown variable 'Host=127.0.0.1'
Splaktar

@Splaktar: có lỗi đánh máy. Hostcần phải viết thường hostvà nó sẽ hoạt động. Ngoài ra, giải pháp này làm việc cho tôi.
Mohammad Faisal

Rực rỡ - điều này đang làm việc cho tôi và môi trường docker của tôi - tôi chỉ phải điều chỉnh ip trong trường hợp của tôi là docker mysql container ip 172.17.xx
InforMedic

6

* Lỗi: 'Không thể kết nối với máy chủ MySQL cục bộ thông qua socket' /var/run/mysqld/mysqld.sock '(2)'

các giải pháp

cuối cùng gỡ cài đặt và cài đặt lại mysql. **

  • sudo apt-get loại bỏ máy chủ mysql
  • sudo apt-get loại bỏ mysql-client
  • sudo apt-get loại bỏ mysql-common
  • sudo apt-get loại bỏ phpmyadmin

sau đó cài đặt lại bằng cách

  • sudo apt-get cài đặt mysql-server-5.6

Sau thao tác này, 164 MB không gian đĩa bổ sung sẽ được sử dụng.

  • Bạn có muốn tiếp tục? [Y / n] Y nhấn CÓ để cài đặt hoàn tất

...... .......

  • Cuối cùng, bạn sẽ nhận được những dòng này ....

    Thiết lập libhtml-template-perl (2,95-1) ...

    Thiết lập mysql-common-5.6 (5.6.16-1 ~ exp1) ... Xử lý các kích hoạt cho libc-bin (2.19-0ubfox6) Xử lý các kích hoạt cho ureadahead (0.100.0-16) ...

  • Và sau đó

    root @ ubfox1404: ~ # mysql -u root -p (đối với mỗi mật khẩu trước tiên bạn nên sử dụng)

  • Nhập mật khẩu:

  • Lưu ý: Mật khẩu đã nhập phải giống với mật khẩu thời gian cài đặt của mysql (như .root, system, admin, rahul, v.v.)

    Sau đó gõ

  • SỬ DỤNG rahul_db (tên cơ sở dữ liệu);

Cảm ơn.**


vui lòng cải thiện chất lượng câu trả lời
Mo.

Điều này làm việc cho tôi do nhiều phiên bản mysql được cài đặt. cũng loại bỏ mysql-server-5.6/5.5, mysql-client-5.6/5.5. Cảm ơn!
Luuk Skeur

E: Package 'mysql-server-5.6' has no installation candidate, nó không tồn tại trong Ubuntu 18.04
juliocesar 16/07/19

6

Đảm bảo đường dẫn tệp ổ cắm không thể truy cập của bạn giống như '/var/run/mysqld/mysqld.sock', nếu không, thay đổi đường dẫn như của bạn. Dừng mysqld

$ sudo /etc/init.d/mysqld stop

Nếu quá trình vẫn chạy;

$ sudo pkill -9 mysqld

Loại bỏ thư mục mysql nơi socket sẽ tạo. Đối với tôi nó không được phép gỡ bỏ, vì vậy tôi phải loại bỏ mạnh mẽ.

$ sudo mkdir -p /var/run/mysqld

Đặt quyền sở hữu cho dirctory

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

Bắt đầu mysql

$ sudo /etc/init.d/mysql start

Đang cố gắng kết nối mysql

$ sudo mysql -u dbuser -p

Vâng, đó là cùng một câu trả lời tôi đã đưa ra vào ngày 14 tháng 2 năm 19 lúc 11:30 (xem bên dưới)
Ingo

Bạn là người cứu rỗi.
Sahib Khan

5

Tôi nghĩ rằng máy chủ MySQL của bạn chưa bắt đầu. Vì vậy, khởi động máy chủ bằng một trong các lệnh sau.

#services mysql start

hoặc là

#/etc/init.d/mysql start

5

Giải pháp tạm thời

Có lẽ ai đó phải đối mặt với vấn đề này. Tôi đang sử dụng Mysql Workbench trên Ubuntu 14 và gặp lỗi này.

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

Tìm tập tin ổ cắm của bạn bằng cách chạy sudo find / -type s, trong trường hợp của tôi đó là/run/mysqld/mysqld.sock

Vì vậy, tôi chỉ cần tạo một liên kết đến tập tin này trong tmpthư mục.

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

Như bạn có thể thấy vị trí của tệp nằm trong /tmpthư mục nên chắc chắn nó sẽ bị xóa. Bạn có thể thay đổi .sockvị trí tập tin. Xem @ user3002884 trả lời.
Song phương

Tôi biết, tôi vừa hoàn thành câu trả lời của bạn để những người dùng khác biết trước rằng giải pháp chỉ là tạm thời, vì thư mục
Alex Burdusel

Bạn đã cứu mạng tôi :)
Mashpy Rahman

4

bạn có thể tìm thấy mysqld.socktrong /var/run/mysqldnếu bạn đã cài đặt mysql-server bằng cáchsudo apt-get install mysql-server


4

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

trong /etc/my.cnfthêm dòng này:

[client]
socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]

Và khởi động lại dịch vụ với: service mysql restart

cái này làm việc cho tôi


4

Điều này đã được đề cập một vài lần rồi, nhưng điều này làm việc ngay lập tức với tôi:

khởi động lại dịch vụ mysql


Thật thú vị khi điều này khác với việc chỉ sử dụng lệnh "mysql" đơn giản
luminol

3

Trong trường hợp của tôi, hai quy trình mysqld đang chạy .. đã giết các quy trình tùy chọn bằng cách sử dụng pkill -9 mysqld


Tôi cần phải thêm 'sudo' giết quá trình.
Noti

3

Nếu bạn có nhiều cơ sở dữ liệu và bảng trên hệ thống của mình và nếu bạn đã innodb_file_per_tableđặt trong my.cnf, thì máy chủ mysql của bạn có thể đã hết các đối tượng / tệp đã mở (hoặc thay vào đó là mô tả cho các đối tượng này) Đặt số tối đa mới với

open-files-limit = 2048

và khởi động lại mysql. Cách tiếp cận này có thể giúp ích khi ổ cắm hoàn toàn không được tạo ra, nhưng thực sự điều này có thể không phải là vấn đề thực sự, có một vấn đề tiềm ẩn.


2

Tôi vừa gặp sự cố này trên Ubuntu 14.10

Các lượt mysql-serverkhông còn được cài đặt (bằng cách nào đó nó đã bị xóa) nhưng tôi không thể chỉ cài đặt nó vì có một số gói bị hỏng và các vấn đề / xung đột phụ thuộc.

Cuối cùng, tôi đã phải cài đặt lại mysql

sudo apt-get remove mysql-client
sudo apt-get install mysql-server


2

Giải pháp của tôi;

Ubuntu 18.04 (WSL)

/etc/mysql/my.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/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

Tôi đã thay đổi cổng. Nó làm việc cho tôi. Bạn có thể viết một cổng khác. Ví dụ 3355


2

Tại sao nhận được lỗi này

Tôi đã nhận được các bản cập nhật mới của các thư viện mysql vì vậy tôi đã cập nhật hệ điều hành Kubfox của mình sau khi nhận được các lỗi này.


Các lệnh tôi đã thử và cách tôi sửa nó.

MySql-server đang chạy chính xác nhưng khi tôi cố gắng kết nối việc cung cấp của nó

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'.

Tôi đã kiểm tra /var/run/mysqld/mysqld.sock'.thư mục này. Các tập tin của tôi không tồn tại.

Tôi cũng đã thử các lệnh này để kết nối nhưng không hiệu quả với tôi.

 mysql -h 127.0.0.1 -P 3306 -u root -p

 sudo service mysql start

Sau khi lãng phí vòng khoảng 2 giờ tôi đã tìm ra giải pháp

sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade -f

Sau đó mọi thứ cố định cho tôi.


Điều này giúp tôi khắc phục vấn đề. Tôi không hiểu nó liên quan đến vấn đề bị
sock

1

Thay đổi hostđể 127.0.0.1làm việc cho tôi.

Chỉnh sửa tập tin trong /etc/mysql/my.cnfvà thêm dòng được đề cập dưới đây vào phần:client

[client]
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Sau khi bạn đã hoàn thành với nó. Thực hiện lệnh sau.

sudo service mysql start

Người bạn này, đã giúp tôi :)
Bhargav Nanekalva

@NBhargav Tôi rất vui vì bạn có thể giải quyết vấn đề của bạn .. Chúc mừng bạn thân .. 😇😇
Dulith De Costa

1

Tôi cũng sẽ kiểm tra cấu hình mysql. Tôi đã gặp vấn đề này với máy chủ của riêng mình nhưng tôi hơi quá vội vàng và định cấu hình sai innodb_buffer_pool_size cho máy của tôi.

innodb_buffer_pool_size = 4096M

Nó thường chạy tốt đến năm 2048 nhưng tôi đoán tôi không có bộ nhớ cần thiết để hỗ trợ 4 hợp đồng biểu diễn.

Tôi tưởng tượng điều này cũng có thể xảy ra với các cài đặt cấu hình mysql khác.


1

Tôi gặp vấn đề tương tự trên VPS CentOS. Nếu MySQL sẽ không khởi động hoặc tiếp tục gặp sự cố ngay sau khi khởi động, hãy thử các bước sau:

1) Tìm tập tin my.cnf (của tôi được đặt trong /etc/my.cnf) và thêm dòng:

innodb_force_recovery = X

thay thế X bằng một số từ 1 đến 6, bắt đầu từ 1 và sau đó tăng dần nếu MySQL không bắt đầu. Cài đặt thành 4, 5 hoặc 6 có thể xóa dữ liệu của bạn, vì vậy hãy cẩn thận và đọc http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html trước.

2) Khởi động lại dịch vụ MySQL. Chỉ CHỌN sẽ chạy và đó là bình thường tại thời điểm này.

3) Kết xuất tất cả các cơ sở dữ liệu / lược đồ của bạn với mysqldump từng cái một, không nén các bãi chứa vì dù sao bạn cũng phải giải nén chúng sau này.

4) Chỉ di chuyển (hoặc xóa!) Chỉ các thư mục của bd bên trong / var / lib / mysql, bảo toàn các tệp riêng lẻ trong thư mục gốc.

5) Dừng MySQL và sau đó bỏ ghi chú dòng được thêm vào 1). Bắt đầu MySQL.

6) Khôi phục tất cả bd bị đổ trong 3).

Chúc may mắn!


1

Hãy thử làm như sau tại dấu nhắc thiết bị đầu cuối:

sudo mysql

Khi điều đó cho phép bạn vào, bạn có thể tạo một người dùng mới và cấp các đặc quyền mà bạn muốn trên cơ sở dữ liệu cụ thể mà họ cần truy cập.

Mysql 5.7 đã thay đổi một số thứ và theo mặc định sử dụng plugin auth_socket (trái ngược với mysql_native_password) cho root để bảo vệ tài khoản khỏi bị hack. Bạn có thể ghi đè lên điều này bằng cách đặt trường plugin cho root, nhưng trừ khi bạn có một lý do rất chính đáng, có lẽ bạn không nên phá vỡ sự bảo vệ. Đặc biệt là khi sudo mysqldễ hơn mysql -u root -pdù sao.

Tôi đã tìm ra thông tin này - của tất cả các nơi - từ trang trợ giúp của Raspberry Pi . Làm việc như một cơ duyên sau khi LubFi 18.04 làm phiền tôi trong vài giờ.


1

Đầu tiên tạo dir / var / run / mysqld

với lệnh:

mkdir -p /var/run/mysqld

sau đó thêm phần cứng vào thư mục

chown mysql:mysql /var/run/mysqld

sau này thử

mysql -u root

1

Tôi đã có cùng một vấn đề chính xác. Sau khi vật lộn trong một giờ, tôi đã tìm ra cách sửa nó mà không cần cài đặt lại mysql-common, mysql-client, mysql-server.

Trước hết, hãy chuyển đến "/ var / run / mysqld". Bạn sẽ thấy rằng mysql.sock không tồn tại. Chỉ cần xóa toàn bộ thư mục mysqld và tạo lại nó và cung cấp cho nó các đặc quyền cần thiết.

# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/

Bây giờ, Giết toàn bộ quá trình mysql. Có thể nó sẽ hiển thị cho bạn lệnh "chờ trình dọn dẹp trang" khi chạy "/etc/init.d/mysql status" ngay cả sau khi tắt dịch vụ.

Để đóng hoàn toàn dịch vụ, hãy sử dụng

# pkill -9 mysqld

Khi quá trình bị hủy, hãy thử bắt đầu lại bằng cách sử dụng

# /etc/init.d/mysql start

Và bạn sẽ thấy rằng nó hoạt động tốt! Và cũng sẽ không có vấn đề trong việc ngăn chặn nó quá.

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.