Saya ingin menganalisis mysql
lalu lintas. Saat ini, semua permintaan mysql dikirim ke soket unix MySQL:
unix 2 [ ACC ] STREAM LISTENING 3734388 15304/mysqld /var/run/mysqld/mysqld.sock
Saya mencoba untuk menonaktifkan soket itu untuk memaksa MySQL untuk menggunakan soket jaringan sebagai gantinya pada loopback. Saya mencoba mengomentari semua socket
arahan dalam my.cnf
dan debian.cnf
file dan me-restart MySQL tetapi tidak ada bedanya.
Bagaimana saya bisa menonaktifkan soket unix MySQL untuk memaksa MySQL melalui jaringan?
info tambahan: Aku sedang menjalankan MySQL 5.1
di ubuntu 10.04
.
Tindakan atas pertanyaan
Karena banyak orang menyarankan mengaktifkan soket jaringan saya ingin mengklarifikasi pertanyaan saya dengan menunjukkan bahwa alamat bind sudah diaktifkan dengan bind-address = 127.0.0.1
dan bahwa koneksi mendengarkan tersedia:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 15601/mysqld
Namun saya masih melihat tidak ada koneksi yang mencoba 127.0.0.1:3306
datang dari aplikasi web saya (situs web Drupal).
Diperbarui dengan jawabannya
Tampaknya memang masalah tersebut berasal dari mysqli
konektor yang digunakan Drupal ( .ht_config.php
bagi mereka yang tertarik). Sudah diatur mysqli://drupal:***@localhost/drupal
:, mengubah localhost
untuk 127.0.0.1
memperbaiki masalah (yaitu Drupal sekarang membuat koneksi ke soket jaringan).
--protocol
.. lihat jawaban Jonathan.Di Linux dan * nixes lainnya, MySQL akan menganggap Anda ingin menggunakan soket jika Anda terhubung ke host "localhost" (yang akan menjadi nama host default).
Anda dapat menimpanya dalam 3 cara: 1) Tentukan nama host yang berbeda seperti 127.0.0.1 (
mysql -h 127.0.0.1
) atau nama host asli server Anda 2) Tentukan bahwa Anda ingin menggunakan TCP dan bukan soket (mysql --protocol tcp
)Anda juga dapat dengan mudah membuat default saya mengedit my.cnf Anda sehingga memiliki ini ([klien] berarti klien apa pun:
Anda dapat melihat deskripsi lengkap tentang bagaimana MySQL memutuskan cara terhubung di sini:
http://dev.mysql.com/doc/refman/5.5/en/connecting.html
sumber
Bukankah ini benar-benar masalah klien? Jika menggunakan program mysql Anda dapat menggunakan
--protocol
sakelar. Dari halaman manualSaya baru saja mencoba
sementara memantau port 3306 dengan
tcpdump -i lo tcp port 3306
dan saya bisa melihat lalu lintas sedangkan jika saya hanya menjalankanSaya (dengan benar) tidak melihat lalu lintas di port 3306.
SUNTING:
Sekarang setelah Anda memberi tahu kami bahwa Anda menggunakan DRUPAL, solusinya relatif mudah.
Buka
sites/<sitename>
atausites/default
editsettings.php
fileAnda akan menemukan struktur seperti ini
Ubah
'localhost'
to'127.0.0.1'
dan simpan file.sumber
no control
saya sedang dramatis. Saya bisa memodifikasi.ht_config.php
file dan memperbaiki masalah ini..ht_config.php
alih-alihsettings.php
. Saya tidak tahu mengapa (tim dev memintanya seperti itu). Sekarang masalahnya adalah bahwa Drupal tampaknya membaca.ht_config.php
file pada setiap permintaan (karena jika saya mengubahnya, perubahan segera diperhitungkan) yang tidak dapat membantu dengan pertunjukan. Kami akan mencari cara untuk men-cache pengaturan itu pada lapisan aplikasi tapi itu masalah yang berbeda.--protocol=socket
jika Anda memilikihost
entri di[client]
bagian.my.cnf
itu memberikanwrong or unknown protocol
kesalahan. (mysql 5.7.13)Ini mungkin terdengar agak gila
Coba atur file socket ke jalur absolut yang jalurnya berada di komputer lain
http://dev.mysql.com/doc/refman/5.0/en/server-options.html#option_mysqld_socket
Jika tidak, Anda tidak dapat mem-bypass perilaku default ini karena file socket harus ada untuk mysqld untuk berkomunikasi dengannya.
sumber
Edit my.cnf dan tambahkan arahan
atau IP pilihan Anda untuk membuatnya dapat diakses melalui jaringan. Mulai ulang mysql setelah membuatnya berfungsi.
sumber
klien php mysqli akan menggunakan file unix socket bukan jaringan tcp ketika Anda memasukkan nilai NULL atau string "localhost" ( http://www.php.net/manual/en/mysqli.construct.php )
tampaknya klien sqlyog selalu menggunakan jaringan tcp bahkan ketika Anda mengisi "localhost" di dalamnya
sumber
Saya harus menghapus /etc/my.cnf (setelah mencadangkannya), lalu me-restart server. Lalu saya bisa terhubung dengan soket dan kesalahannya hilang.
sumber