MySQL sunucusunu birden fazla IP adresine nasıl bağlayabilirim?


260

MySQL'i birden fazla IP adresine bağlamak için gizli bir yol var mı?

Gördüğüm kadarıyla , cind adresindeki my.cnf parametresi birden fazla IP'yi desteklemiyor ve bir defadan fazla olamaz.

Yanıtlar:


242

Hayır, yok (sadece 1 saat önce kontrol ettim). Adres adresini my.cnf'de yorumlayabilirsiniz:

#skip-networking
#bind-address                   = 127.0.0.1

Yalnızca 2 IP istiyorsanız, bir güvenlik duvarı kullanmanız gerekir.


31
Doğru. Bağlama, sunucuda 0, 1 veya tüm IP adresleriyle sınırlıdır .
Joe,

7
Yayınlamak ve yerel unix soket ve belirterek hem bir ağ soketi hem hizmet edebileceğinden çok daha gerçekleştiğine dikkat edin socketve bind-addressseçenekler.
danorton

5
bugün itibariyle hala geçerli.
Dennis Nolte

22
Bu çok saçma.
Phillipp

2
@AJP Mysql, ayrıcalık sisteminde 'localhost' ve '127.0.0.1' öğelerini farklı şekilde ele alır. Burada onaylandı: Bir ana bilgisayar adı belirtmezseniz ya da özel ana bilgisayar adı localhost belirtirseniz, bir Unix soket dosyası kullanılır.
Christian Lescuyer

78

127.0.0.x 'e bağlanması, tüm cihazlarda kullanılabilir olmasını sağlamaz, yalnızca yerel olarak kullanılabilir yapar. Eğer tüm arayüzler için uygun hale getirmek istiyorsanız, 0.0.0.0 kullanmanız gerekir. Birden fazladan, ancak tüm arabirimlerden daha azına erişmek istiyorsanız, 0.0.0.0'a bağlanmanız ve erişilmesini istemediğiniz arabirimlerin güvenlik duvarını kapatmanız gerekir.

Ayrıca, ikinci bir güvenlik katmanı olarak, tüm MySQL kullanıcılarınızın ana bilgisayar alanının% (başka bir ana bilgisayar) dışında bir şeye ayarlanmış olduğundan emin olmalısınız.


1
Kırık bir ağ yığınız yoksa, bir TCP bağlantı noktasını 0.0.0.0 adresine bağlayamazsınız.
John Gardeniers

26
Sen edebilirsiniz 0.0.0.0 bağlanır. Sadece ona gidemezsin. Eğer Linux kullanıyorsanız (hatta Windows'ta bile, sadece windows için netcat'i kurun) deneyin: bir terminalde: nc -l 0.0.0.0 4321 ve ikinci bir terminalde: telnet <bilgisayarınızın herhangi bir arayüzünün IP'si> 4321 ona bağlanacak.
Gri Panter

Dediğim gibi, ağ bağlantınız kırılmadığı sürece ...
John Gardeniers

1
@JohnGardeniers Özel adresler altında tanımlanan linux ip (7) kılavuz sayfasında bulunmasının nedeni bu INADDR_ANY (0.0.0.0) means any address for binding;mu?
ebyrob

2
Debian'da, /etc/mysql/conf.d/bindaddress.cnfiçeriği olan bir dosya oluşturun[mysqld] \n bind-address = 0.0.0.0
Yves Martin

41

Birden fazla IP adresine bağlanamazsınız, bunun yerine mevcut tüm IP adreslerine bağlanabilirsiniz. Eğer öyleyse, sadece 0.0.0.0MySQL yapılandırma dosyanızdaki (örneğin /etc/mysql/my.cnf) bir ciltleme adresi için kullanın :

bind-address    = 0.0.0.0

Adres 0.0.0.0 ise, sunucu tüm sunucu ana bilgisayar IPv4 arayüzlerinde TCP / IP bağlantılarını kabul eder.

Ayrıca, adres ise ::, sunucu tüm sunucu ana bilgisayarları IPv4 ve IPv6 arayüzlerinde TCP / IP bağlantılarını kabul eder. Tüm sunucu arayüzlerinde hem IPv4 hem de IPv6 bağlantılarına izin vermek için bu adresi kullanın.

Ya da basitçe bind-address=tamamen yorum yapabilirsiniz , böylece tüm adreslere bağlanır. Ancak, skip-networkinguzak bağlantılara da izin vermek istiyorsanız, my.cnf’nizde etkin olmadığından emin olun (Daha fazla bilgi için: MySQL: Hem uzak hem de yerel bağlantılara izin verin ).

Bağlama adresini değiştirdikten sonra, MySQL sunucunuzu şu şekilde yeniden başlatmayı unutmayın:

sudo service mysql restart

Sonunda Master / Slave çoğaltmasıyla tek bir makinede (farklı portlar) birden fazla MySQL örneği çalıştırmayı düşünebilirsiniz. Çoğaltma, bir MySQL veritabanı sunucusundan (ana) gelen verilerin bir veya daha fazla MySQL veritabanı sunucusuna (ikincil) kopyalanmasını sağlar.

Daha fazla oku:


Bu iyi çalışıyor. Tüm kullanıcıların IP adresi ne olursa olsun 2., 3., bağlanmak için izin verilmesi halinde sadece kontrol etmeyi unutmayın
gies0r

21

Hayır yapamazsın. Açıkça bağlantı verdiğiniz sayfa açıkça belirtiliyor:

Bağlanılacak IP adresi. Sadece bir adres seçilebilir. Bu seçenek birden çok kez belirtilirse, verilen son adres kullanılır.

Adres belirtilmemişse veya 0.0.0.0 belirtilmemişse, sunucu tüm arayüzleri dinler.


12

Diğerlerinin cevapladığı gibi, birden fazla arayüze seçici olarak bağlanmanın henüz bir yolu yoktur.

Linux, mümkün kılan bazı TCP araçlarına sahiptir. Bu kurulumda, mysql'yi 127.0.0.1'de dinleyecek şekilde yapılandırır ve sonra rasgele arayüzlerde göstermek için redir komutunu kullanırsınız.

Bunu sanal bir kutu konuğunun ana makinede kurulu mysql'yi görmesine yardımcı olmak için kullanıyorum.

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

Not MySQL> = 8.0.13, birden fazla arayüze bağlanmaya izin verir.
txyoji


5

MySQL 8.0.13'ten önce --bind-address, tek bir joker karakter olmayan IP adresi veya ana bilgisayar adı ya da birden çok ağ arabiriminde dinlemeye izin veren joker karakter adres biçimlerinden birini belirleyebilen tek bir adres değerini kabul eder (*, 0.0 .0.0 veya: :).

MySQL 8.0.13'ten itibaren, --bind-address, az önce açıklandığı gibi tek bir değeri veya virgülle ayrılmış değerler listesini kabul eder. Seçenek, birden çok değerin bir listesini adlandırdığında, her değer, joker olmayan bir IP adresi veya ana bilgisayar adı belirtmelidir; hiçbiri bir joker adres biçimi belirtemez (*, 0.0.0.0 veya: :).

Kaynak: https://dev.mysql.com/doc/refman/8.0/en/server-options.html


3

In my.cnf değişim (genellikle Linux üzerinde /etc/mysql/my.cnf veya pencereler için kontrol bu cevabı.

bind-address                   = 127.0.0.1

için

bind-address                   = 0.0.0.0

Daha sonra Windows'ta mysql'yi (Ubuntu servisinde mysql restart'da ), Win + R services.msc aracını kullanarak yeniden başlatın.

0.0.0.0, mevcut tüm IP'lere my.cnf dosyasında verilen bağlantı noktası ile bağlanmasını söyler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.