Tidak dapat terhubung ke server MySQL lokal melalui socket '/var/run/mysqld/mysqld.sock' (2)


9

Saya memiliki konfigurasi server surat menggunakan dovecot + postfix + mysql dan itu berjalan dengan baik di server (Ubuntu Server). Tetapi selama minggu lalu berhenti bekerja dengan benar. Itu tidak mengirim email. Ketika saya mencoba untuk telnet localhost smtpmenghubungkan saya berhasil tetapi ketika saya lakukan mail from:<steve@example.com>dan tekan Enter it hang on, tidak ada yang terjadi.

Setelah memeriksa /var/log/mail.logfile saya menemukan bahwa mungkin (99%) masalahnya ada di postfix ketika mencoba terhubung ke server MySQL. Jika Anda melihat file log yang diberikan di bawah ini, Anda dapat melihat isinya 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

Saya mencoba netstat -ln | grep mysqldan mengembalikannya

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

Konten /etc/postfix/mysql-virtual-alias-maps.cffile ada di sini:

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

Di sini saya mencoba untuk mengubah hosts = 127.0.0.1tetapi katanyawarning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (110)

Jadi, saya tersesat dan tidak tahu harus berubah ke mana lagi untuk menyelesaikan masalah. Setiap bantuan akan sangat dihargai.

Terima kasih.

EDIT 1

Ketika saya melakukan netstat -na, saya melihat bahwa mysql tidak mengikat ke localhost atau ke 127.0.0.1. Mungkinkah itu masalahnya juga?

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

Jawaban:


6

Sepertinya sangat bodoh tapi saya sudah menyelesaikan masalahnya. Saya tidak memperhatikan bahwa administrator sistem entah bagaimana memblokir port 3306 untuk semua host di firewall, dan karena itu saya tidak dapat terhubung ke mysql. Setelah menghapus batasan itu, saya dapat terhubung ke mysql tanpa masalah. Terima kasih atas saran dan bantuan Anda.


1
Bagaimana cara menghapus batasan?
Hijau

Saya ingin terhubung melalui TCP, bukan melalui soket. Bagaimana saya bisa melakukan itu? Terima kasih.
krisanalfa

Hai @ Hijau, ada solusi yang Anda dapatkan tentang cara menghapus pembatasan atau lebih tepatnya bagaimana menemukan jika ada pembatasan pada port 3306?
Sushivam

3

Saya punya masalah serupa. Mengubah "hosts = localhost" ke "hosts = 127.0.0.1" dan mengatur bind-address ke alamat yang sama dan memperbaikinya untuk saya (bind-address ditetapkan pada 0.0.0.0 karena beberapa alasan)


Saya dapat meninggalkan bind-address sebagai 0.0.0.0 (yang diperlukan untuk pengelompokan yang saya lakukan dengan galera), dan baru saja mengubah "host = 127.0.0.1: 3306" untuk mengubahnya menggunakan TCP. Saya memutuskan ini alih-alih mengikat pemasangan ke chroot Postfix seperti yang dilakukan orang lain.
Sean Reifschneider

3

Sudahkah Anda mencoba terhubung ke server Mysql?

mysql -u username -p

Anda juga dapat mencoba mengubah alamat mendengarkan di /etc/mysql/my.cnf menjadi 127.0.0.1 dan restart MySQL

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

Saya melakukan semua yang Anda katakan dan tidak ada hasil
Bakhtiyor

maksud saya, saya dapat terhubung ke mysql menggunakan mysql -u username -p
Bakhtiyor

Seharusnya "my.cnf"
jnunn

2

Saya baru saja mendapatkan kesalahan yang sama ini di salah satu komputer perusahaan.

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

Saya juga mendapatkan banyak kesalahan ini ketika saya mencoba menjalankan program X-windows melalui 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

Ternyata saya punya sistem file root yang sepenuhnya terisi, tanpa ruang disk kosong, jadi sistem saya tidak bisa menulis banyak file yang diperlukan. Saya mendapatkan segala macam kesalahan, terkait dengan banyak program yang berbeda. (Tidak dapat masuk melalui GDM, wallpaper GDM menjadi hitam, kesalahan file kunci gconf, dll ...)

Yang saya lakukan adalah memasukkan perintah sederhana ini untuk menyingkirkan lebih dari 400 MB nilai file di partisi root yang tidak lagi diperlukan.

sudo apt-get autoremove

Itu memberi saya sistem file root ruang bernapas yang dibutuhkan. Sekarang semuanya berjalan dengan baik. Tebak direktori root 10 GB tidak cukup untuk menangani pembaruan Ubuntu selama dua tahun.

Jika ada yang peduli, sistem telah menjalankan Ubuntu 10.04 sejak keluar. Sistem memperbarui setidaknya sekali seminggu. Tanggal hari ini adalah 9-6-2012, jadi itu pembaruan yang hampir 2 1/2 tahun.


ketika masalah Anda adalah ruang, saya juga menyarankan askubuntu.com/questions/17432/…
ecoologic

+1 untuk menunjukkan masalah ruang - ini menyelesaikan masalah saya.
yuval

1

Yang akhirnya membantu saya adalah membersihkan (tidak menghapus!) Semua paket apt-get yang berhubungan dengan mysql kecuali libmysqlclient16yang dalam status de-install (tidak yakin apa itu).

Jadi, lakukan saja:

dpkg --get-selections | grep mysql

lalu:

sudo apt-get purge <package_name>

Mulai dari yang umum kemudian pergi ke klien dan kemudian ke server.


Saya kira jawaban ini tidak membantu. Masalahnya adalah port 3306 diblokir, tidak rusak paket MySQL.
Nephente

PERINTAH INI AKAN MENGHAPUS SETIAP PAKET TERGANTUNGlibmysqlclientXX
krisanalfa

bagaimana menemukan port 3306 yang diblokir?
Sushivam
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.