Mysql – birden fazla IP den mysqle baglanmak

Eğer 2 farklı IP’deki sunucunuz, aynı mysql sunucusuna bağlanması gerekiyorsa yapmanız gereken temel olarak bir kaç maddelik işiniz var demektir. Bunları listeleyelim :

  1. Bağlanılan (mysql-server’in olduğu makinenizde) mysql konfigürasyon dosyanızı bulun. (işletim sisteminiz centos ise /etc/my.cnf gibi bir yerde, ubuntu ise, /etc/mysql/my.cnf gibi bir yerdedir). 
  2. my.cnf içerisinde bind-address diye bir parametre varsa, onu 0.0.0.0 şeklinde düzeltin, yoksa
    bind-address = 0.0.0.0

    şeklinde yeni bir satır ekleyin (çünkü varsayılan değeri 127.0.0.1 yani localhost tur)

  3. my.cnf içerisinde skip-networking diye bir parametre varsa onu silin. (veya başına # işareti koyarak yorum haline getirin.)
  4. Mysqlinizi yeniden başlatın. (service mysql restart)
  5. şu anda veritabanınız dışarıdan bağlantılara açık hale geldi. Ancak bu bi güvenlik tehdidini de beraberinde getirir. Doğrudan bir tehlike değil bu ancak, root şifrenizi deneye yanıla(brute-force teknikleri de dahil) bulabilirler, veya yanlış vermiş olduğunuz yetki, user var ise, bunları keşfedebilirler)  Bu yüzden bir firewall kullanmalıyız. Halihazırda iptables vardır diye düşünüyorum. iptables için bir kural ekleyelim ve istemediğimiz ipler dışındaki istekleri drop edelim, böylece sadece istediğimiz IP’ler networkten içeri girebilsin. :
    iptables -A INPUT -p tcp --dport 3306 ! -d xxx.xxx.xxx.xxx -j DROP
  6. bir user ekleyin.
    CREATE USER 'kullanici'@'ip_Adresi' IDENTIFIED BY 'şifre';
  7. Bu kullanıcıya ilgili IP için yetki verin(hangi yetkileri istiyorsanız)
    GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , EVENT, TRIGGER, SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON `database_adi` . * TO 'kullanici'@'ip_Adresi';
  8. Testlerinizi yapın. Bu testleri hem bağlanmasını istediğiniz makineler için, hem de istemediğiniz makineler için mutlaka yapın. mysql-client yüklü ise şöyle yapabilirsiniz :
    mysql -u kullanici -h ip_Adresi database_adi

mysql bağlantıları için iptables kuralları kaynak: http://www.cyberciti.biz/faq/unix-linux-mysqld-server-bind-to-more-than-one-ip-address/