MySQL Uzak Bağlantı (Remote Access) Nasıl Açılır?
MySQL, varsayılan yapılandırması gereği yalnızca aynı sunucu üzerinden (localhost) gelen bağlantıları kabul edecek şekilde çalışır. Bu güvenlik yaklaşımı sayesinde yetkisiz uzak bağlantılar engellenir ve veritabanı sunucusu dış tehditlere karşı korunmuş olur. Ancak bazı durumlarda farklı bir sunucudaki web uygulaması, masaüstü veritabanı istemcisi veya harici bir servis tarafından MySQL sunucusuna uzaktan erişim sağlanması gerekebilir.
Bu rehberde MySQL sunucusunu güvenli bir şekilde dış bağlantılara açmayı, gerekli yapılandırma dosyalarını düzenlemeyi, kullanıcı yetkilendirmeyi ve güvenlik açısından dikkat edilmesi gereken noktaları adım adım ele alıyoruz. Anlatılan işlemler MySQL 8.x ve MariaDB sürümleri ile Ubuntu, Debian, AlmaLinux, Rocky Linux ve benzeri Linux dağıtımlarında uygulanabilir.
Desteklenen Sistemler
- Veritabanı: MySQL 8.x ve MariaDB
- İşletim Sistemleri: Ubuntu, Debian, AlmaLinux, Rocky Linux ve CentOS
- Tahmini İşlem Süresi: 10 - 20 Dakika
- Zorluk Seviyesi: Orta
- Sunucu Yeniden Başlatılır: Hayır (Yalnızca MySQL servisi yeniden başlatılır.)
MySQL Neden Dış Bağlantıları Kabul Etmez?
MySQL kurulduğunda güvenlik amacıyla yalnızca yerel bağlantılara izin verecek şekilde yapılandırılır. Böylece aynı sunucu üzerinde çalışan uygulamalar veritabanına erişebilirken, internet üzerinden yapılacak doğrudan bağlantılar engellenmiş olur.
Uzak bağlantıya ihtiyaç duyulduğunda yalnızca gerekli kullanıcı hesaplarına ve güvenilir IP adreslerine erişim izni verilmesi önerilir. Veritabanını tüm internet erişimine açmak ciddi güvenlik riskleri oluşturabilir.
MySQL sunucunuzu yapılandırmadan önce mutlaka mevcut yapılandırma dosyanızın yedeğini almanız önerilir.
Kurulum Öncesi Gereksinimler
İşleme başlamadan önce aşağıdaki gereksinimlerin karşılandığından emin olun.
- Sunucu üzerinde root veya sudo yetkisine sahip bir kullanıcı hesabı
- MySQL veya MariaDB servisinin çalışıyor olması
- SSH erişimi
- Sunucu güvenlik duvarını yönetebilme yetkisi
- Bağlantı kurulacak istemci IP adresinin bilinmesi
Mümkün olduğunca yalnızca belirli IP adreslerine erişim izni verin. Tüm internet erişimine izin vermek yerine IP bazlı yetkilendirme yapmak çok daha güvenlidir.
Adım 1: MySQL Yapılandırma Dosyasını Bulun
İlk olarak MySQL yapılandırma dosyasını açmanız gerekir. Dosyanın bulunduğu dizin kullanılan Linux dağıtımına göre değişebilir.
En yaygın yapılandırma dosyaları aşağıdaki konumlarda bulunur.
Dosyanın konumunu öğrendikten sonra tercih ettiğiniz metin düzenleyicisi ile açabilirsiniz.
Dosya yolu işletim sistemine göre farklılık gösterebilir. Emin değilseniz find veya locate komutları ile yapılandırma dosyasını arayabilirsiniz.
Adım 2: bind-address Ayarını Düzenleyin
Yapılandırma dosyasında aşağıdaki satırı bulun.
Bu değer yalnızca localhost üzerinden bağlantıya izin verir. Uzak bağlantıları kabul edebilmesi için aşağıdaki şekilde düzenleyin.
Bu ayar MySQL servisinin sunucudaki tüm ağ arayüzlerinden gelen bağlantıları dinlemesini sağlar.
Bu ayarı değiştirmek tek başına yeterli değildir. Güvenlik açısından kullanıcı yetkilendirmesi ve güvenlik duvarı kuralları da doğru şekilde yapılandırılmalıdır.
Adım 3: skip-networking Ayarını Kontrol Edin
Bazı sistemlerde aşağıdaki satır etkin olabilir.
Bu ayar etkin olduğunda MySQL yalnızca yerel soket bağlantılarını kabul eder ve TCP/IP üzerinden gelen tüm bağlantıları reddeder.
Bu satır mevcutsa başına # karakteri ekleyerek yorum satırı haline getirin veya tamamen kaldırın.
Her MySQL sürümünde skip-networking satırı bulunmayabilir. Dosyada yer almıyorsa herhangi bir işlem yapmanız gerekmez.
Adım 4: MySQL Kullanıcısı Oluşturun
MySQL sunucusunu uzak bağlantılara açtıktan sonra, bağlantı kuracak kullanıcı hesabını oluşturmanız gerekir. Güvenlik açısından her uygulama veya kullanıcı için ayrı bir MySQL hesabı oluşturmanız önerilir.
MySQL sunucusuna root kullanıcısı ile bağlanın.
Parolanızı girdikten sonra aşağıdaki örnek komut ile yeni bir kullanıcı oluşturabilirsiniz.
Yukarıdaki örnekte yalnızca 192.168.1.25 IP adresinden bağlantıya izin verilmektedir. Bu yöntem, tüm internet erişimine izin vermekten çok daha güvenlidir.
Adım 5: Kullanıcıya Yetki Verin
Kullanıcı oluşturulduktan sonra erişebileceği veritabanı ve sahip olacağı yetkiler belirlenmelidir.
Örneğin yalnızca belirli bir veritabanı üzerinde temel işlem yetkileri vermek için aşağıdaki komutu kullanabilirsiniz.
Bu komut kullanıcıya yalnızca belirtilen veritabanı üzerinde veri okuma, ekleme, güncelleme ve silme yetkisi verir.
Kullanıcılara yalnızca ihtiyaç duydukları yetkileri vermeniz önerilir. Gereksiz yetkiler olası güvenlik risklerini artırabilir.
Tüm Yetkileri Vermek Gerekirse
Bazı yönetim işlemleri için kullanıcıya belirli bir veritabanı üzerinde tam yetki verilmesi gerekebilir.
ALL PRIVILEGES yalnızca gerçekten ihtiyaç duyulduğunda kullanılmalıdır. Üretim ortamlarında minimum yetki prensibinin uygulanması tavsiye edilir.
Adım 6: Yetkileri Uygulayın
Yetkilendirme işlemlerinin hemen geçerli olması için aşağıdaki komutu çalıştırın.
Bu işlem kullanıcı ve yetki bilgilerinin yeniden yüklenmesini sağlar.
MySQL'in güncel sürümlerinde birçok durumda bu işlem otomatik olarak uygulanmaktadır. Ancak uyumluluk açısından FLUSH PRIVILEGES komutunun çalıştırılması önerilir.
Adım 7: Güvenlik Duvarında 3306 Portunu Açın
MySQL doğru yapılandırılmış olsa bile güvenlik duvarı tarafından engelleniyorsa uzak bağlantılar kurulamaz. Kullanılan işletim sistemine göre gerekli portu açmanız gerekir.
Ubuntu / Debian (UFW)
AlmaLinux / Rocky Linux / CentOS (firewalld)
3306 portunu tüm internete açmak yerine yalnızca bağlantı kurulacak IP adreslerine erişim izni vermeniz güvenlik açısından çok daha doğru olacaktır.
Adım 8: MySQL Servisini Yeniden Başlatın
Yapılandırma değişikliklerinin uygulanabilmesi için MySQL servisini yeniden başlatmanız gerekir.
Ubuntu / Debian
AlmaLinux / Rocky Linux / CentOS
Servis yeniden başladıktan sonra MySQL sunucunuz uzak bağlantıları kabul etmeye hazır olacaktır.
Servisin durumunu kontrol etmek için systemctl status mysql veya systemctl status mysqld komutlarını kullanabilirsiniz.
Adım 9: Uzak Bağlantıyı Test Edin
Yapılandırma işlemleri tamamlandıktan sonra farklı bir bilgisayardan veya sunucudan MySQL sunucunuza bağlantı kurarak erişimin başarılı olup olmadığını test edebilirsiniz.
Komut satırı üzerinden bağlantı kurmak için aşağıdaki örnek komutu kullanabilirsiniz.
Bağlantı başarılı olduğunda kullanıcı parolanız istenir ve ardından MySQL komut satırına giriş yapabilirsiniz.
Bağlantı testi yaparken önce aynı ağ içerisinden, ardından farklı bir ağdan bağlantı kurmayı deneyerek yapılandırmanın doğru çalıştığını doğrulayabilirsiniz.
Grafik Arayüzlü MySQL İstemcileri
Komut satırı yerine grafik arayüz kullanmayı tercih ediyorsanız aşağıdaki istemciler ile MySQL sunucunuza güvenli şekilde bağlanabilirsiniz.
- MySQL Workbench
- HeidiSQL
- DBeaver
- TablePlus
Bağlantı oluştururken genellikle aşağıdaki bilgiler istenir.
- Sunucu IP adresi veya alan adı
- Port numarası (Varsayılan: 3306)
- MySQL kullanıcı adı
- Kullanıcı parolası
- Varsa SSL bağlantı ayarları
İnternet üzerinden erişim sağlanan üretim sunucularında mümkün olduğunca SSL şifrelemesi kullanılması önerilir.
Sık Karşılaşılan Sorunlar
Access denied for user
Kullanıcı adı, parola veya yetkilendirme bilgileri hatalı olabilir. Kullanıcının doğru IP adresi için oluşturulduğunu ve gerekli yetkilerin verildiğini kontrol edin.
Can't connect to MySQL server
MySQL servisi çalışmıyor olabilir veya 3306 numaralı TCP portu güvenlik duvarı tarafından engelleniyor olabilir. Ayrıca bind-address ayarının doğru yapılandırıldığını kontrol edin.
Connection timed out
Bağlantı isteği sunucuya ulaşamıyor olabilir. Güvenlik duvarı kurallarını, ağ yapılandırmasını ve sunucunun internete erişimini kontrol edin.
Host is not allowed to connect
Bağlanmaya çalışan IP adresi için yetkilendirme yapılmamış olabilir. Kullanıcı hesabının izin verilen IP adresi ile eşleştiğinden emin olun.
3306 Portu Kapalı Görünüyor
Sunucu üzerinde çalışan güvenlik duvarını ve varsa ağ sağlayıcınızın ek güvenlik kurallarını kontrol edin. Bazı bulut sunucu sağlayıcıları işletim sistemi güvenlik duvarına ek olarak ağ seviyesinde de filtreleme uygulayabilir.
Güvenlik Önerileri
- MySQL sunucunuzu mümkün olduğunca yalnızca belirli IP adreslerine açın.
- % karakteri ile tüm IP adreslerine erişim vermekten kaçının.
- Root kullanıcısı ile uzaktan bağlantıya izin vermeyin.
- Her uygulama için ayrı bir MySQL kullanıcısı oluşturun.
- Minimum yetki prensibini uygulayın.
- Güçlü ve benzersiz parolalar kullanın.
- Sunucu ve MySQL güncellemelerini düzenli olarak yükleyin.
- İnternet üzerinden erişim gerekiyorsa SSL/TLS bağlantısını tercih edin.
- Düzenli olarak veritabanı yedekleri alın.
MySQL sunucusunu doğrudan internete açmak yerine mümkün olduğunda VPN veya özel ağ (Private Network) üzerinden erişim sağlanması güvenlik açısından daha doğru bir yöntemdir.
Root kullanıcısını uzaktan erişime açmanız önerilmez. Bunun yerine yalnızca ihtiyaç duyulan yetkilere sahip ayrı kullanıcı hesapları oluşturarak veritabanınızı daha güvenli hale getirebilirsiniz.
Özet Komutlar
Bu rehberde kullanılan temel komutlar aşağıda toplu olarak verilmiştir.
İSİMKAYIT Yardım Merkezi
Bu makalede MySQL sunucusunun güvenli bir şekilde uzak bağlantılara açılması, kullanıcı oluşturulması, yetkilendirme işlemleri ve bağlantı testlerinin nasıl yapılacağını adım adım ele aldık. MySQL, MariaDB, Linux sunucu yönetimi, veritabanı güvenliği ve web hosting yönetimi hakkında daha fazla teknik rehber için İSİMKAYIT Yardım Merkezi'ndeki diğer makalelerimizi inceleyebilirsiniz.
Bu makale yardımcı olmadı mı? Destek ekibimizle iletişime geçin veya 0850 290 3344 numaralı hattı arayın.