Pertanyaan Bagaimana cara mengikat server MySQL ke lebih dari satu alamat IP?


Apakah ada cara rahasia untuk mengikat MySQL ke lebih dari satu alamat IP?

Sejauh yang saya bisa lihat bind-address parameter di my.cnf tidak mendukung lebih dari satu IP dan Anda tidak dapat memilikinya lebih dari satu kali.


245
2017-09-02 16:04






Jawaban:


Tidak, tidak ada (saya baru saja memeriksanya 1 jam yang lalu). Anda dapat memberi komentar pada bind-address di my.cnf:

#skip-networking
#bind-address                   = 127.0.0.1

Jika Anda hanya menginginkan 2 IP, Anda akan harus menggunakan firewall.


228
2017-09-02 16:08



Benar. Mengikat terbatas baik 0, 1, atau semua Alamat IP di server. - Joe
Namun, perhatikan, daripada Anda dapat mempublikasikan dan melayani soket unix lokal dan soket jaringan dengan menentukan keduanya socket dan bind-address pilihan. - danorton
masih berlaku sampai hari ini. - Dennis Nolte
Itu konyol. - Phillipp
@AJP Mysql memperlakukan ‘localhost’ dan ‘127.0.0.1’ berbeda dalam sistem hak istimewa. Dikonfirmasi di sini: File soket Unix digunakan jika Anda tidak menentukan nama host atau jika Anda menentukan nama host lokal khusus. - Christian Lescuyer


Mengikat ke 127.0.0.x tidak akan membuatnya tersedia untuk semua perangkat, itu akan membuatnya tersedia secara lokal saja. Jika Anda ingin membuatnya tersedia untuk semua antarmuka, Anda harus menggunakan 0.0.0.0. Jika Anda ingin mengaksesnya dari lebih dari satu, tetapi kurang dari semua antarmuka, Anda harus mengikat ke 0.0.0.0 dan firewall dari antarmuka yang tidak ingin diakses melalui.

Juga, sebagai lapisan keamanan kedua, Anda harus memastikan bahwa semua pengguna MySQL Anda memiliki bidang host yang disetel ke sesuatu selain% (yaitu host mana pun).


76
2017-09-02 16:29



Kecuali Anda memiliki tumpukan jaringan yang rusak Anda tidak dapat mengikat port TCP ke alamat 0.0.0.0. - John Gardeniers
Kamu bisa ikat ke 0.0.0.0. Anda tidak bisa merutekannya. Jika Anda berada di Linux (atau bahkan di Windows, cukup menginstal netcat untuk windows) coba: dalam satu terminal: nc -l 0.0.0.0 4321 dan di terminal kedua: telnet <IP dari semua antarmuka komputer Anda> 4321 Dan itu akan terhubung dengannya. - Grey Panther
Seperti yang saya katakan, kecuali Anda memiliki jaringan yang rusak ... - John Gardeniers
@JohnGardeniers Apakah itu sebabnya di halaman manual linux ip (7) yang didefinisikan di bawah alamat khusus: INADDR_ANY (0.0.0.0) means any address for binding;? - ebyrob
Di Debian, buat file /etc/mysql/conf.d/bindaddress.cnf file dengan konten [mysqld] \n bind-address = 0.0.0.0 - Yves Martin


Anda tidak dapat mengikat lebih dari satu alamat IP, tetapi Anda dapat mengikat ke semua alamat IP yang tersedia. Jika demikian, gunakan saja 0.0.0.0 untuk alamat yang mengikat dalam file konfigurasi MySQL Anda (mis. /etc/mysql/my.cnf) sebagai berikut:

bind-address    = 0.0.0.0

Jika alamatnya adalah 0.0.0.0, server menerima koneksi TCP / IP di semua antarmuka IPv4 host server.

Selanjutnya jika alamatnya ::, server menerima koneksi TCP / IP pada semua host server IPv4 dan antarmuka IPv6. Gunakan alamat ini untuk mengizinkan koneksi IPv4 dan IPv6 pada semua antarmuka server.

Atau Anda dapat berkomentar bind-address= semuanya, jadi itu akan mengikat semua alamat. Tetapi pastikan Anda tidak memilikinya skip-networking diaktifkan di my.cnf Anda jika Anda ingin mengizinkan koneksi jarak jauh juga (Baca lebih lanjut: MySQL: Memungkinkan koneksi jarak jauh dan lokal).

Setelah mengubah alamat pengikatan, jangan lupa untuk me-restart server MySQL Anda dengan:

sudo service mysql restart

Akhirnya Anda dapat mempertimbangkan untuk menjalankan beberapa contoh MySQL pada satu mesin (port yang berbeda) dengan replikasi Master / Slave. Replikasi memungkinkan data dari satu server database MySQL (master) untuk disalin ke satu atau lebih server database MySQL (para budak).

Baca lebih lajut:


33
2017-08-11 09:37



Sebenarnya saya berharap ada opsi untuk mengikat beberapa, tetapi tidak semua alamat. - BlaM


Tidak Anda tidak bisa. Halaman yang Anda tautkan dengan jelas menyatakan:

Alamat IP untuk diikat. Hanya satu alamat yang bisa dipilih. Jika opsi ini ditentukan beberapa kali, maka alamat terakhir yang diberikan digunakan.

Jika tidak ada alamat atau 0.0.0.0 yang ditentukan, server akan mendengarkan semua antarmuka.


19
2017-09-14 20:45





Seperti yang telah dijawab orang lain, belum ada cara untuk secara selektif mengikat ke lebih dari satu antarmuka.

Linux memiliki beberapa alat TCP yang membuatnya mungkin. Dalam pengaturan ini, Anda akan mengkonfigurasi mysql untuk mendengarkan 127.0.0.1 dan kemudian menggunakannya redir untuk memaparkannya pada antarmuka yang sewenang-wenang.

Saya telah menggunakan ini untuk membantu kotak virtual tamu melihat mysql diinstal pada mesin host.

redir --laddr=192.168.33.1 --lport=3306 --caddr=127.0.0.1 --cport=3306 &

8
2018-02-24 20:23





Saya pikir pertanyaan Anda terkait dengan bug ini http://bugs.mysql.com/bug.php?id=14979 Laporan bug menyarankan beberapa solusi.


6
2017-09-02 16:14



Permintaan fitur MySQL sejak tahun 2005! - Tonin


Di my.cnf ubah (biasanya /etc/mysql/my.cnf di Linux atau untuk windows check ini menjawab.

bind-address                   = 127.0.0.1

untuk

bind-address                   = 0.0.0.0

Kemudian restart mysql (di Ubuntu layanan mysql restart) pada windows biasanya layanan restart melalui Menangkan + R services.msc 

0.0.0.0 memberitahukannya untuk mengikat semua IP yang tersedia dengan port yang juga diberikan di my.cnf


2
2017-09-19 18:34