Saya menjalankan MySQL 5.6 pada 64-bit Windows 7 dengan IPv6 dan IPv4 diaktifkan.
Di my.ini:
port=3306
bind-address = ::1
Saya berharap untuk menggunakan IPv6 dan membatasi ke adaptor loop-back. Saya menggunakan ::1
bukan 127.0.0.1
karena win7 dengan IPv6 default ::1
untuk localhost
.
Dengan konfigurasi ini, netstat melaporkan hal berikut:
C:\>netstat -an |findstr 3306
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
TCP [::1]:3306 [::]:0 LISTENING
Sepertinya koneksi mungkin diblokir pada antarmuka IPv4, tetapi melihat laporan netstat bahwa 0.0.0.0
port 3306
terbuka membuat saya gelisah.
Dokumentasi MySQL menetapkan:
Jika alamat tersebut adalah alamat IPv4 atau IPv6 “biasa” (seperti 127.0.0.1 atau :: 1), server menerima koneksi TCP / IP hanya untuk alamat IPv4 atau IPv6 tersebut.
TCPView memberi saya info yang sama dengan netstat. Saya tidak dapat mengaktifkan TDIMon di sistem saya.
Bagaimana saya bisa mencegah mysql dari mendengarkan 0.0.0.0
?
net stop mysql
saya tidak melihat apa pun mendengarkan:3306
. Ketika sayanet start mysql
dan cepatnetstat -an
saya melihat keduanya mendengarkan entri.Saya akhirnya punya waktu untuk menggali sumber mysql 5.6. Baris 2405 dari mysqld.cc tampaknya menyimpan beberapa jawaban.
Pengaturan opsi soket ini menyebabkan garis tambahan
0.0.0.0:3306
muncul dinetstat
. Namun, saya masih tidak dapat terhubung dengan menentukan127.0.0.1
ke telnet.Komentar memang membuatnya terdengar seperti opsi ini hanya boleh digunakan ketika wildcard diterapkan, tetapi tampaknya opsi diterapkan bahkan ketika
bind-address
ditentukan.Kemungkinan diskusi terkait di sini: http://serverdown.ttwait.com/que/486038
cache Google: http://webcache.googleusercontent.com/search?q=cache:14aq4-3tRLsJ:serverdown.ttwait.com/que/486038+&cd=4&hl=id&ct=clnk&gl=us
EDIT: Dalam laporan bug (yang masih dalam triase), saya telah mengusulkan MySQL hanya menghapus IPV6_V6ONLY saat mengikat ke alamat wildcard
*
. Ini sepertinya memberikan fleksibilitas konfigurasi paling besar di my.ini. Jika beberapa admin mengikat::
dan kemudian terhubung ke127.0.0.1
mereka bisa terkejut. Mengikat*
bukannya::
akan memperbaikinya.sumber
0.0.0.0:3306
berarti MySQL mendengarkan semua adaptor / alamat untuk IPv4. Saya akan meletakkan baris berikut di my.cnf:Itu harus membatasi akses IPv4 ke localhost; tidak masalah versi Windows mana yang menjadi default, Anda masih dapat terhubung dengannya. Jika itu tidak menyelesaikannya, maka Anda kemungkinan telah
bind-address
mengatur file lain di suatu tempat.Juga, pastikan bahwa mysql benar-benar dihentikan ketika Anda me-restart itu; mungkin saja contoh yang lebih lama masih berjalan dan mendengarkan
0.0.0.0
.EDIT
Lihat Dokumentasi MySQL bagian 4.2.3.3 Menggunakan File Pilihan untuk file lain yang
bind-address
parameternya mungkin ditentukan.sumber
::1
kecuali saya berencana untuk menonaktifkan IPv6 (Microsoft merekomendasikan untuk menonaktifkan IPv6). Saya dapat terhubung127.0.0.1
dengan menetapkannya secara eksplisit, tetapi kemudian alat atau pengguna yang dipilihlocalhost
tidak akan berfungsi. (Saya benar-benar memperhatikan masalah ketika saya memiliki masalah kinerja yang mengikat127.0.0.1
dan terhubung kelocalhost
pada windows 7, itu sekitar 30 detik per koneksi)bind-address = 127.0.0.1
bind-address = ::1
bind-address
entri, hanya nilai terbawah yang digunakan. Saya mendengarkan127.0.0.1:3306
atau::1:3306
dan0.0.0.0:3306
.hosts
file Anda ? Lihat victor-ratajczyk.com/post/2012/02/25/... Selain itu, mungkin membantu untuk memposting file log mysql Anda segera setelah dimulai.localhost
untuk menyelesaikan ke default baru::1
. Mempertimbangkan setiap instalasi MySQL 5.6 pada win7 Saya telah melihat pameran perilaku yang sama, saya tidak berpikir posting file log khusus saya akan berguna di sini.Solusinya ada di
conf
file .Coba untuk Hapus semua-I
atau--interface
opsi dari/etc/default/ntp
dan masukkan yang berikut ke Anda/etc/ntp.conf
:Tanpa antarmuka, abaikan wildcard NTP juga akan mendengarkan pada 0.0.0.0
Tanpa antarmuka, dengarkan NTP hanya akan mendengarkan pada 127.0.0.1 (tentu saja)
Jika Anda sudah memiliki baris itu:
maka cukup beri komentar
** Kedua, coba ganti baris berikut dalam
my.ini
untuk
EDIT:
jika Anda menggunakan windows7 64-bit,
Anda harus membuka file itu di sini:
Localhost harus menjadi entri pertama dalam file tersebut. File host tersebut mungkin memiliki :: 1 untuk localhost. Untuk memperbaikinya, tambahkan (atau batalkan komentar) baris:
dan komentari kalimat itu:
untuk
dan kemudian Anda dapat terhubung melalui localhost.
sumber
/etc
atau/
dalam hal ini. Mengikat ke 127.0.0.1 berfungsi, jika saya tidak menggunakanlocalhost
string koneksi saya dan jika saya yakin saya tidak pernah ingin menggunakan IPv6 untuk terhubung secara lokal. (Saya punyalocalhost
semua file konfigurasi dan skrip sisi klien saya untuk beberapa alasan, dan pengembang lain cenderung mengetiknya jika mereka checkout / membangun dan menggunakan klien mereka sendiri.) PS - Untuk saat ini, solusi kami adalah "hapus bind -menambahkan spesifikasi dan mendengarkan pada 0.0.0.0:3306 dengan memadamkan api ". Ini bekerja, tapi ini agak seperti mengemudi di atas pelat logam.