Câu hỏi Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/var/mysql/mysql.sock' (38)


Tôi đang gặp một vấn đề lớn đang cố gắng kết nối với mysql. Khi tôi chạy:

/usr/local/mysql/bin/mysql start

Tôi có lỗi sau:

Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)

tôi có mysql.sock Bên dưới /var/mysql danh mục.

Trong /etc/my.cnf Tôi có:

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

[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

và trong /etc/php.ini Tôi có :

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock

Tôi đã khởi động lại apache bằng cách sử dụng sudo /opt/local/apache2/bin/apachectl restart

Nhưng tôi vẫn có lỗi.

Nếu không, tôi không biết liệu điều đó có liên quan hay không nhưng khi tôi làm mysql_config --sockets tôi có

--socket         [/tmp/mysql.sock]

322
2018-03-21 10:33


gốc


MySQL có chạy không? - David
Tôi muốn bổ sung @David, bạn nên xem nhật ký MySQL để xem liệu máy chủ có thực sự chạy hay không nếu nó đã bị hỏng / chưa sẵn sàng chấp nhận các kết nối. - Romain
Không, mysql không chạy, tôi gặp lỗi "Không thể kết nối ....." - Lambivist
Tôi đã nhận được cùng một lỗi, nhưng trong trường hợp của tôi, tôi phát hiện ra mysql sẽ không bắt đầu vì đĩa đã được 100% đầy đủ. /var/log/mysqld.log rất hữu ích. - yellavon
lý do họ đang yêu cầu nếu nó đang chạy, tôi đoán, là bởi vì các ổ cắm được thực hiện khi dịch vụ bắt đầu. tôi đã cài đặt mysql, nhưng chưa bao giờ khởi động dịch vụ, vì vậy tệp .sock không tồn tại. kiểu service mysqld start nếu bạn vừa cài đặt. hth - changokun


Các câu trả lời:


Nếu tệp my.cnf của bạn (thường là trong / etc / mysql / thư mục) được định cấu hình chính xác

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

bạn có thể kiểm tra xem mysql có đang chạy với lệnh sau không:

mysqladmin -u root -p status

hãy thử thay đổi sự cho phép của bạn vào thư mục mysql. Nếu bạn đang làm việc tại địa phương, bạn có thể thử:

sudo chmod -R 755 /var/lib/mysql/

đã giải quyết nó cho tôi


190
2017-11-10 19:08



Nó đã giúp tôi sau khi tôi làm theo các bước trên và khởi động lại mysqld dịch vụ. - whirlwin
Nó sẽ là tốt nhất nếu bạn thiết lập các điều khoản để 755 để chỉ có chủ sở hữu thư mục có thể ghi vào nó. - codewaggle
Tôi chỉnh sửa câu trả lời bc chmod 777 là thói quen xấu - Mateng
Vấn đề của tôi thực ra chỉ là dung lượng lưu trữ của tôi cho ứng dụng web của tôi đã hết dung lượng! Cổ điển! - James T Snell
Trên openSUSE 12.3 của tôi, my.cnf nằm trong / etc /.


bạn có chắc là bạn đã cài đặt mysql cũng như máy chủ mysql ..

Ví dụ để cài đặt máy chủ mySql, tôi sẽ sử dụng yum hoặc apt để cài đặt cả công cụ dòng lệnh mysql và máy chủ:

yum -y install mysql mysql-server (or apt-get install mysql mysql-server)

Bật dịch vụ MySQL:

/sbin/chkconfig mysqld on

Khởi động máy chủ MySQL:

/sbin/service mysqld start

sau đó đặt mật khẩu gốc MySQL:

mysqladmin -u root password 'new-password' (with the quotes)

Tôi hy vọng nó sẽ giúp.


84
2018-06-24 13:55



Vô cùng hữu ích. Tôi đã khá chắc chắn tôi cần phải cài đặt nó, nhưng điều này đặt tất cả các lệnh cần thiết ở một nơi. - Dan Bechard
có nó đã làm việc cho tôi. - Awijeet
Tôi đã sử dụng homebrew và nó hoạt động như một sự quyến rũ: brew install mysql - JaKXz
Tôi đã cài đặt ứng dụng khách, lệnh tôi cần là sudo apt-get install mysql-server thì cuộc sống tốt - ErichBSchulz
Không phải là đầu ra Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)  từ khách hàng? Đó là khách hàng đang cố gắng và không kết nối được, đúng không? (Tôi nghĩ câu hỏi ban đầu cần chỉnh sửa để làm rõ điều đó). - msouth


Một cách giải quyết nhanh chóng làm việc cho tôi: thử sử dụng địa chỉ ip cục bộ (127.0.0.1) thay vì 'localhost' trong mysql_connect (). Điều này "lực lượng" php để kết nối thông qua TCP / IP thay vì một ổ cắm unix.


66
2017-12-01 10:18



Điều này làm việc cho tôi. - konyak
Nó hoạt động ... nhưng tại sao? MySQL không giải quyết được localhost và lấy 127.0.0.1 anyway trước khi thậm chí cố gắng để kết nối? - Jaime Hablutzel
nope ... khi sử dụng localhost, bạn không sử dụng Internet Socket. Bạn đang sử dụng Ổ cắm IPC. en.wikipedia.org/wiki/Unix_domain_socket . 127.0.0.1 là loopback cục bộ có nghĩa là yêu cầu sẽ không thoát khỏi máy tính của bạn nhưng nó sẽ sử dụng TCP / IP do đó chậm hơn ... - Master Yogurt
Làm việc cho tôi quá. Tôi đang trên ubuntu 14.04, hhvm và nginx. - Maykonn
cảm ơn. điều này làm việc cho tôi nhưng nó không rõ ràng với tôi từ câu trả lời những gì sửa chữa là - Nathan Buesgens


Tôi nhận được lỗi sau

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

Đã thử một số cách và cuối cùng đã giải quyết nó thông qua cách sau

sudo gksu gedit /etc/mysql/my.cnf

đã sửa đổi

#bind-address       = 127.0.0.1

đến

bind-address        = localhost

và khởi động lại

sudo /etc/init.d/mysql restart

nó đã làm việc


47
2017-07-14 11:37





Hãy chắc chắn rằng bạn đang chạy mysqld: /etc/init.d/mysql start


21
2018-05-11 04:37



kisco @ kisco: ~ $ /etc/init.d/mysqld start -ash: /etc/init.d/mysqld: Không có tệp hoặc thư mục nào như vậy - l--''''''---------''''''''''''
Sau đó, có lẽ /etc/init.d/mysql start - Fabian Schmengler
Đã làm cho tôi! Cảm ơn một tấn! - Rakshith Ravi
Hoặc là sudo service mysql start|restart cho Ubuntu. - Wtower


Để ngăn sự cố xảy ra, bạn phải thực hiện tắt máy chủ một cách duyên dáng từ dòng lệnh thay vì tắt nguồn máy chủ.

shutdown -h now

Điều này sẽ dừng các dịch vụ đang chạy trước khi tắt máy.

Dựa trên Centos, một phương pháp bổ sung để làm cho nó trở lại một lần nữa khi bạn chạy vào vấn đề này là để di chuyển mysql.sock:

mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

service mysqld start

Khởi động lại dịch vụ tạo ra một mục mới gọi là mqsql.sock


18
2017-12-19 10:50





Một giải pháp khác là chỉnh sửa /etc/my.cnf và bao gồm máy chủ lưu trữ trong phần [client]

 [client]
 #password       = your_password
 host            = 127.0.0.1
 port            = 3306
 socket          = /var/run/mysql/mysql.sock

Và sau đó khởi động lại dịch vụ mysql.

Cách giải quyết này đã được thử nghiệm trong: Phiên bản máy chủ: 5.5.25a-log


10
2018-01-10 17:25



thêm phần [client] được khuyến nghị nếu chưa có trong my.cnf - Cris


Như có thể thấy bằng nhiều câu trả lời ở đây, có rất nhiều vấn đề có thể dẫn đến thông báo lỗi này khi bạn khởi động dịch vụ MySQL. Vấn đề là, MySQL nói chung sẽ cho bạn biết chính xác những gì là sai, nếu bạn chỉ cần nhìn vào tập tin đăng nhập thích hợp.

Ví dụ, trên Ubuntu, bạn nên kiểm tra /var/log/syslog. Vì rất nhiều thứ khác cũng có thể đăng nhập vào tệp này, bạn có thể muốn sử dụng grep để xem thông điệp mysql và tail để chỉ xem xét gần đây nhất. Tất cả cùng nhau, có thể trông giống như:

grep mysql /var/log/syslog | tail -50

Đừng mù quáng thay đổi cấu hình của bạn vì ai đó đã nói 'Điều này làm việc cho hệ thống của tôi'. Tìm hiểu điều gì thực sự sai với hệ thống của bạn và bạn sẽ nhận được kết quả tốt hơn nhanh hơn nhiều.


10
2017-12-16 19:33



+1 Để lùi lại một bước và chỉ ra điều mà nhiều câu trả lời khác thậm chí không xem xét - thực sự thấy những gì ứng dụng có thể đã báo cáo là một vấn đề là cách tiếp cận tốt hơn nhiều so với việc vội vã lao vào và thực hiện những thay đổi có thể không thậm chí có thể áp dụng ...! - SlySven
Ah, vì vậy nó sử dụng sai .cnf. Giải thích nó. Bây giờ tôi có thể ngừng thử những điều ngẫu nhiên và giải quyết vấn đề thực tế. Cảm ơn. - Synetech