ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ภายในผ่านซ็อกเก็ต '/var/run/mysqld/mysqld.sock' (2)


9

ฉันมี mailserver กำหนดค่าโดยใช้dovecot + postfix + mysqlและมันก็ทำงานได้ดีในเซิร์ฟเวอร์ (เซิร์ฟเวอร์ Ubuntu) แต่ในช่วงสัปดาห์ที่แล้วหยุดทำงานอย่างถูกต้อง มันไม่ได้ส่งอีเมล เมื่อฉันพยายามtelnet localhost smtpเชื่อมต่อสำเร็จ แต่เมื่อฉันmail from:<steve@example.com>กด Enter มันจะหยุดทำงานไม่มีอะไรเกิดขึ้น

หลังจากตรวจสอบ/var/log/mail.logไฟล์ฉันพบว่าอาจ (99%) ปัญหาอยู่ที่ postfix เมื่อพยายามเชื่อมต่อกับเซิร์ฟเวอร์ MySQL 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

ฉันพยายามnetstat -ln | grep mysqlแล้วก็กลับมา

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

เนื้อหาของ/etc/postfix/mysql-virtual-alias-maps.cfไฟล์อยู่ที่นี่:

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

ที่นี่ฉันพยายามเปลี่ยนhosts = 127.0.0.1แต่มันบอกว่าwarning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (110)

ดังนั้นฉันหลงทางและไม่รู้จะเปลี่ยนแปลงที่ไหนเพื่อแก้ไขปัญหา ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก

ขอบคุณ.

แก้ไข 1

เมื่อฉันทำ netstat -na ฉันเห็นว่า mysql ไม่ได้ผูกไว้กับ localhost หรือ 127.0.0.1 มันอาจเป็นปัญหาหรือไม่

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

คำตอบ:


6

ดูเหมือนโง่มาก แต่ฉันแก้ปัญหาได้แล้ว ฉันไม่ได้สังเกตว่าผู้ดูแลระบบบล็อกพอร์ต 3306 สำหรับโฮสต์ทั้งหมดที่ไฟร์วอลล์ดังนั้นฉันจึงไม่สามารถเชื่อมต่อกับ mysql ได้ หลังจากลบข้อ จำกัด นั้นฉันสามารถเชื่อมต่อกับ mysql ได้โดยไม่มีปัญหาใด ๆ ขอบคุณสำหรับคำแนะนำและความช่วยเหลือของคุณ


1
จะลบข้อ จำกัด ได้อย่างไร
Green

ฉันต้องการเชื่อมต่อผ่าน TCP ไม่ใช่ผ่านซ็อกเก็ต ฉันจะทำสิ่งนั้นได้อย่างไร ขอบคุณ
krisanalfa

สวัสดี @Green คำตอบใด ๆ ที่คุณมีเกี่ยวกับวิธีการลบข้อ จำกัด หรือวิธีการค้นหาว่ามีข้อ จำกัด ในพอร์ต 3306 หรือไม่
Sushivam

3

ฉันมีปัญหาที่คล้ายกัน การเปลี่ยน "hosts = localhost" เป็น "hosts = 127.0.0.1" และการตั้งค่าการเชื่อมโยงที่อยู่ไปยังที่อยู่เดียวกันแก้ไขให้ฉัน (การผูกที่อยู่ถูกตั้งไว้ที่ 0.0.0.0 ด้วยเหตุผลบางอย่าง)


ฉันสามารถออกจากที่อยู่ผูกเป็น 0.0.0.0 (ซึ่งเป็นสิ่งจำเป็นสำหรับการจัดกลุ่มที่ฉันทำกับ galera) และเพิ่งเปลี่ยน "โฮสต์ = 127.0.0.1: 3306" เพื่อเปลี่ยนเป็นใช้ TCP ฉันตัดสินใจในเรื่องนี้แทนที่จะผูกซ็อกเก็ตลงใน chroot Postfix ตามที่คนอื่นทำ
Sean Reifschneider

3

คุณพยายามเชื่อมต่อกับเซิร์ฟเวอร์ Mysql หรือไม่?

mysql -u username -p

นอกจากนี้คุณสามารถลองเปลี่ยนฟังที่อยู่ใน /etc/mysql/my.cnf เป็น 127.0.0.1 และรีสตาร์ท MySQL

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

ฉันทำทุกอย่างที่คุณพูดและไม่มีผลลัพธ์
Bakhtiyor

ฉันหมายความว่าฉันสามารถเชื่อมต่อกับ mysql โดยใช้ mysql -u ชื่อผู้ใช้ -p
Bakhtiyor

ควรเป็น "my.cnf"
jnunn

2

ฉันเพิ่งได้รับข้อผิดพลาดเดียวกันนี้ในหนึ่งในคอมพิวเตอร์ของ บริษัท

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

ฉันยังได้รับข้อผิดพลาดนี้มากเมื่อฉันพยายามเรียกใช้โปรแกรม X-windows ผ่าน 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

กลับกลายเป็นว่าฉันมีระบบไฟล์รูทที่ถูกเติมเต็มโดยไม่มีพื้นที่ว่างในดิสก์ดังนั้นระบบของฉันจึงไม่สามารถเขียนไฟล์ที่จำเป็นได้มากมาย ฉันได้รับข้อผิดพลาดทุกประเภทที่เกี่ยวข้องกับโปรแกรมที่แตกต่างกัน (ไม่สามารถลงชื่อเข้าใช้ผ่าน GDM, รูปพื้นหลัง GDM เป็นสีดำ, ข้อผิดพลาดไฟล์ล็อค gconf ฯลฯ ... )

ทั้งหมดที่ฉันทำก็คือป้อนคำสั่งง่ายๆนี้เพื่อกำจัดไฟล์ที่มีมูลค่าเกิน 400 MB ในรูทพาร์ติชันที่ไม่จำเป็น

sudo apt-get autoremove

นั่นทำให้ระบบไฟล์รูทของฉันมีพื้นที่หายใจที่จำเป็น ตอนนี้ทุกอย่างทำงานได้ดี เดาไดเรกทอรีราก 10 GB ไม่เพียงพอที่จะจัดการกับการปรับปรุง Ubuntu สองปีที่คุ้มค่า

ถ้าใครสนใจระบบก็ใช้ Ubuntu 10.04 ตั้งแต่มันออกมา ระบบจะอัพเดทอย่างน้อยสัปดาห์ละครั้ง วันนี้วันที่ 9-6-2012 ดังนั้นเกือบ 2 1/2 ปีมูลค่าการปรับปรุง


เมื่อปัญหาของคุณคือพื้นที่ฉันขอแนะนำaskubuntu.com/questions/17432/ …
ecoologic

+1 สำหรับการชี้ปัญหาอวกาศ - นี่เป็นการแก้ไขปัญหาของฉัน
yuval

1

สิ่งที่ช่วยฉันในที่สุดก็คือการกวาดล้าง (ไม่ลบ!) แพ็กเกจ apt-get ทั้งหมดที่เกี่ยวข้องกับ mysql ยกเว้นlibmysqlclient16ซึ่งอยู่ในสถานะยกเลิกการติดตั้ง (ไม่แน่ใจว่ามันคืออะไร)

ดังนั้นเพียงแค่:

dpkg --get-selections | grep mysql

แล้ว:

sudo apt-get purge <package_name>

เริ่มต้นจากทั่วไปจากนั้นไปที่ไคลเอนต์แล้วเซิร์ฟเวอร์


ฉันไม่คิดว่าคำตอบนี้มีประโยชน์ ปัญหาคือพอร์ต 3306 ที่ถูกบล็อกไม่หักแพ็คเกจ MySQL
Nephente

คำสั่งนี้จะลบlibmysqlclientXX
แพคเกจ

วิธีการค้นหาพอร์ตที่ถูกบล็อก 3306?
Sushivam
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.