MySQL sunucusuna uzaktan bağlantı yapılabilmesi için 3306 numaralı portun erişime açık olması ve MySQL konfigürasyonunun dış bağlantıları kabul edecek şekilde ayarlanmış olması gerekir. Bu işlem genellikle uzak sistemlerden veri erişimi sağlamak veya yazılım projelerinde farklı sunucular arasında veritabanı bağlantısı kurmak için yapılır.
1. MySQL Konfigürasyonunu Düzenleme
SSH ile sunucunuza bağlanın ve aşağıdaki komutla MySQL konfigürasyon dosyasını açın:
nano /etc/my.cnf
Aşağıdaki satırlar varsa kaldırın veya başına #
koyarak pasifleştirin:
bind-address=127.0.0.1
skip-networking
Bu satırlar, MySQL’in sadece localhost’tan bağlantı kabul etmesini sağlar. Bu nedenle silinmelidir.
Kaydettikten sonra çıkın (CTRL + X > Y > Enter).
2. MySQL Servisini Yeniden Başlatın
service mysqld restart
service mysql restart
Sisteminizde hangi servis varsa her ikisini de çalıştırmak zarar vermez.
3. Kullanıcıya Uzaktan Erişim Yetkisi Verme
MySQL'e root veya yetkili kullanıcı ile bağlanın:
mysql -u root -p
Aşağıdaki komutla bir kullanıcıya uzak erişim hakkı tanıyın:
GRANT ALL PRIVILEGES ON *.* TO 'kullaniciadi'@'%' IDENTIFIED BY 'sifre' WITH GRANT OPTION;
FLUSH PRIVILEGES;
%
işareti, tüm IP adreslerinden erişime izin verir. Belirli bir IP adresi için 'kullaniciadi'@'ip_adresi'
şeklinde tanımlanabilir.
4. CentOS 7 ve Üzeri İçin 3306 Portunu Açma
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
Bu komutlar, TCP 3306 portunu kalıcı olarak açar ve güvenlik duvarı ayarlarını yeniler.
5. Port Açıklığını Test Etme
Uzak bir istemciden aşağıdaki komutla portun açık olup olmadığını kontrol edebilirsiniz:
telnet sunucu_ip 3306
veya
nc -zv sunucu_ip 3306
Bu adımlar tamamlandığında, MySQL sunucunuz uzak sistemlerden 3306 portu üzerinden erişilebilir hale gelir. Güvenlik için kullanıcıya verilen IP yetkileri sınırlandırılmalı ve mümkünse sunucuya dış ağdan doğrudan erişim yerine VPN ya da bastion host üzerinden erişim tercih edilmelidir.