Bind-address MySQL 5.7 tidak berfungsi

17

Saya selalu berhasil mengatur koneksi jarak jauh untuk MySQL 5.5.

Hari ini saya menginstal server baru dengan Ubuntu 16.04 dan MySQL 5.7. Tetapi untuk beberapa alasan, saya tidak bisa membuat instalasi MySQL ini mendengarkan host lain tetapi 127.0.0.1.

Ini milik saya /etc/mysql/conf.d/mysql.cnf:

[mysqld]
bind-address = 0.0.0.0

Saya tidak dapat terhubung ke server MySQL ini dari host jarak jauh, dan ketika saya memeriksa saya netstat, saya menyadari bahwa MySQL hanya mendengarkan koneksi dari localhost.

lsof -Pni :3306 output adalah:

COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  5302 mysql   25u  IPv4  37280      0t0  TCP 127.0.0.1:3306 (LISTEN)

Apa masalahnya?

Hast
sumber
Apakah Anda memantulkan mysql? Apa output dari netstat -lntp?
Linuxx
@Linuxx Saya bahkan me-restart seluruh mesin. tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 13050/mysqld
Hast
Saya berasumsi Anda menambahkan baris itu di file itu. Hapus baris itu dan edit file /etc/mysql/mysql.conf.d/mysqld.cnf dan ubah parameter di sana.
Linuxx
1
@Linuxx Ini bekerja seperti sulap :) Saya belum memperhatikan bahwa ada direktori * .conf.d lainnya. Jadi pada dasarnya 5.7 menyimpan [mysql] konfigurasi di direktori conf.d, sedangkan konfigurasi [mysqld] disimpan di mysql.conf.d. Terima kasih! Tolong, buat jawaban, jadi saya akan menerimanya.
Hast
1
Saya telah mengubah bind-address pada /etc/mysql/mysql.conf.d/mysqld.cnf dan /etc/mysql/conf.d/mysql.cnf, restart server tetapi saya masih melihat "tcp 0 0 127.0. 0.1: 3306 "ketika saya menjalankan <netstat -tulpen
Chepech

Jawaban:

39

Mereka mengubah paket MySQL sehingga parameter bind ada di /etc/mysql/mysql.conf.d/mysqld.cnf sekarang. Silakan ubah parameter bind di sana dan hapus apa pun yang Anda tempatkan di /etc/mysql/conf.d/mysql.cnf.

Linuxx
sumber
Ini konyol sekali. Tujuan dari "conf.d" adalah untuk TIDAK mengedit paket yang disediakan default dan menimpa oleh konfigurasi Anda sendiri. Tapi seperti sekarang "mysql.conf.d" menimpa kita, tidak ada cara yang dapat diandalkan untuk memastikan kita akhirnya datang kecuali kita mengedit "mysql.conf.d / mysqld.cnf".
kenn
@kenn: tambahkan config Anda di bawah mysql.conf.d / sebagai gantinya dan beri nama "x-something"
Bell
3
Tentu, tapi apa gunanya "conf.d"? Bukankah "mysql.conf.d" merupakan paket yang disediakan, yang seharusnya ditimpa oleh "conf.d"? Saya pikir urutan memuat "conf.d" dan "mysql.conf.d" harus dibalik dalam "/etc/mysql/my.cnf" di tingkat paket MySQL.
kenn