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)


9

Tôi có cấu hình mailserver bằng cách sử dụng dovecot + postfix + mysql và nó đã chạy tốt trong máy chủ (Ubuntu Server). Nhưng trong tuần trước nó đã ngừng hoạt động chính xác. Nó không gửi email. Khi tôi cố gắng telnet localhost smtpkết nối thành công nhưng khi tôi thực hiện mail from:<steve@example.com>và nhấn Enter thì bị treo, không có gì xảy ra.

Sau khi xem lại /var/log/mail.logtệp tôi đã phát hiện ra rằng có lẽ (99%) vấn đề nằm ở hậu tố khi nó đang cố gắng kết nối với máy chủ MySQL. Nếu bạn thấy tệp nhật ký được cung cấp dưới đây, bạn có thể thấy nó nói Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2).

Nov 14 21:54:36 ns1 dovecot: dovecot: Killed with signal 15 (by pid=7731 uid=0 code=kill)
Nov 14 21:54:36 ns1 dovecot: Dovecot v1.2.9 starting up (core dumps disabled)
Nov 14 21:54:36 ns1 dovecot: auth-worker(default): mysql: Connected to localhost (mailserver)
Nov 14 21:54:44 ns1 postfix/postfix-script[7753]: refreshing the Postfix mail system
Nov 14 21:54:44 ns1 postfix/master[1670]: reload -- version 2.7.0, configuration /etc/postfix
Nov 14 21:54:52 ns1 postfix/trivial-rewrite[7759]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Nov 14 21:54:52 ns1 postfix/trivial-rewrite[7759]: fatal: mysql:/etc/postfix/mysql-virtual-alias-maps.cf(0,lock|fold_fix): table lookup problem
Nov 14 21:54:53 ns1 postfix/master[1670]: warning: process /usr/lib/postfix/trivial-rewrite pid 7759 exit status 1
Nov 14 21:54:53 ns1 postfix/cleanup[7397]: warning: problem talking to service rewrite: Connection reset by peer
Nov 14 21:54:53 ns1 postfix/master[1670]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
Nov 14 21:54:53 ns1 postfix/smtpd[7071]: warning: problem talking to service rewrite: Success

Tôi đã thử netstat -ln | grep mysqlvà nó trở lại

unix 2 [ ACC ] STREAM LISTENING 5817 /var/run/mysqld/mysqld.sock.

Nội dung của /etc/postfix/mysql-virtual-alias-maps.cftập tin ở đây:

user = stevejobs
password = apple
hosts = localhost
dbname = mailserver
query = SELECT destination FROM virtual_aliases WHERE source='%s'

Ở đây tôi đã cố gắng thay đổi hosts = 127.0.0.1nhưng nó nóiwarning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (110)

Vì vậy, tôi bị lạc và không biết phải thay đổi ở đâu để giải quyết vấn đề. Bất kỳ trợ giúp sẽ được đánh giá cao.

Cảm ơn bạn.

CHỈNH SỬA 1

Khi tôi thực hiện netstat -na tôi thấy rằng mysql không liên kết với localhost cũng như 127.0.0.1. Nó cũng có thể là vấn đề?

bakhtiyor@ns1:~$ netstat -na | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN   

Câu trả lời:


6

Có vẻ rất ngu ngốc nhưng tôi đã giải quyết vấn đề. Tôi đã không nhận thấy rằng một quản trị viên hệ thống bằng cách nào đó đã chặn cổng 3306 cho tất cả các máy chủ tại tường lửa và do đó tôi không thể kết nối với mysql. Sau khi loại bỏ hạn chế đó, tôi đã có thể kết nối với mysql mà không gặp vấn đề gì. Cảm ơn lời đề nghị và giúp đỡ của bạn.


1
Làm thế nào để loại bỏ hạn chế?
Màu xanh lá cây

Tôi muốn kết nối qua TCP, không phải qua ổ cắm. Làm thế nào tôi có thể làm điều đó? Cảm ơn.
krisanalfa

Xin chào @Green, bất kỳ giải pháp nào bạn có về cách loại bỏ hạn chế hay đúng hơn là làm thế nào để tìm ra nếu có hạn chế trên cổng 3306?
Sushivam

3

Tôi đã có một vấn đề tương tự. Việc thay đổi "hosts = localhost" thành "hosts = 127.0.0.1" và đặt địa chỉ liên kết thành cùng một địa chỉ đã sửa cho tôi (địa chỉ liên kết được đặt ở 0.0.0.0 vì một số lý do)


Tôi đã có thể để lại địa chỉ liên kết là 0.0.0.0 (cần thiết cho việc phân cụm tôi đang làm với galera) và chỉ cần thay đổi "host = 127.0.0.1: 3306" để chuyển nó sang sử dụng TCP. Tôi đã quyết định về điều này thay vì gắn kết ổ cắm vào chroot Postfix như những người khác đã làm.
Sean Reifschneider

3

Bạn đã thử kết nối với máy chủ Mysql chưa?

mysql -u username -p

Ngoài ra, bạn có thể thử thay đổi địa chỉ nghe trong /etc/mysql/my.cnf thành 127.0.0.1 và khởi động lại MySQL

# /etc/mysql/my.cnf
bind-address = 127.0.0.1

Tôi đã làm tất cả những gì bạn nói và không có kết quả
Bakhtiyor

ý tôi là tôi có thể kết nối với mysql bằng tên người dùng mysql -u
Bakhtiyor

Nên là "my.cnf"
jnunn

2

Tôi chỉ gặp lỗi tương tự trên một trong các máy tính của công ty.

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

Tôi cũng đã gặp lỗi này rất nhiều khi tôi cố chạy các chương trình X-windows thông qua ssh:

GConf Error: Failed to contact configuration server; 
some possible causes are that you need to enable TCP/IP networking for ORBit,
or you have stale NFS locks due to a system crash

Hóa ra tôi có một hệ thống tập tin gốc đã được lấp đầy hoàn toàn, không có dung lượng đĩa trống, vì vậy hệ thống của tôi không thể ghi nhiều tập tin cần thiết. Tôi đã nhận được tất cả các loại lỗi, liên quan đến nhiều chương trình khác nhau. (Không thể đăng nhập thông qua GDM, hình nền GDM bị đen, lỗi tệp khóa gconf, v.v ...)

Tất cả những gì tôi đã làm là nhập lệnh đơn giản này để loại bỏ các tệp có giá trị hơn 400 MB trong phân vùng gốc không còn cần thiết.

sudo apt-get autoremove

Điều đó đã cho hệ thống tập tin gốc của tôi không gian thở cần thiết. Bây giờ mọi thứ chạy tuyệt vời. Đoán một thư mục gốc 10 GB không đủ để xử lý các bản cập nhật Ubuntu có giá trị hơn hai năm.

Nếu có ai quan tâm, hệ thống đã chạy Ubuntu 10.04 kể từ khi nó ra mắt. Hệ thống cập nhật ít nhất một lần một tuần. Hôm nay là ngày 9-6-2012, vì vậy đó là những cập nhật có giá trị gần 2 năm rưỡi.


khi vấn đề của bạn là không gian, tôi cũng đề nghị Askubfox.com/questions/17432/ triệt
ecoologic

+1 để chỉ ra vấn đề không gian - điều này đã giải quyết vấn đề của tôi.
yuval

1

Điều cuối cùng đã giúp tôi là thanh trừng (không loại bỏ!) Tất cả các gói apt-get liên quan đến mysql ngoại trừ libmysqlclient16trong trạng thái gỡ cài đặt (không chắc đó là gì).

Vì vậy, chỉ cần làm:

dpkg --get-selections | grep mysql

và sau đó:

sudo apt-get purge <package_name>

Bắt đầu từ phổ biến sau đó đi đến máy khách và sau đó máy chủ.


Tôi không nghĩ câu trả lời này hữu ích. Vấn đề là cổng 3306 bị chặn, không bị hỏng gói MySQL.
Nepeavere

libmysqlclientXX
QUY TẮC NÀY S REM

Làm thế nào để tìm cổng 3306 bị chặn?
Sushivam
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.