Ana Sayfa Yardım Merkezi Veritabanı İşlemleri
Veritabanı İşlemleri

MySQL Uzak Bağlantı (Remote Access) Nasıl Açılır?

10 dakika okuma Güncel bilgi
Yardım Merkezine Dön

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.

Dikkat
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
İpucu
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.

Ubuntu / Debian /etc/mysql/mysql.conf.d/mysqld.cnf AlmaLinux / Rocky Linux / CentOS /etc/my.cnf MariaDB /etc/mysql/mariadb.conf.d/50-server.cnf

Dosyanın konumunu öğrendikten sonra tercih ettiğiniz metin düzenleyicisi ile açabilirsiniz.

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Bilgi
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.

bind-address = 127.0.0.1

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.

bind-address = 0.0.0.0

Bu ayar MySQL servisinin sunucudaki tüm ağ arayüzlerinden gelen bağlantıları dinlemesini sağlar.

Dikkat
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.

skip-networking

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.

İpucu
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.

mysql -u root -p

Parolanızı girdikten sonra aşağıdaki örnek komut ile yeni bir kullanıcı oluşturabilirsiniz.

CREATE USER 'veritabani_kullanici'@'192.168.1.25' IDENTIFIED BY 'GucluBirParola';
Bilgi
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.

GRANT , , , ON uygulama_db.* TO 'veritabani_kullanici'@'192.168.1.25';

Bu komut kullanıcıya yalnızca belirtilen veritabanı üzerinde veri okuma, ekleme, güncelleme ve silme yetkisi verir.

İpucu
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.

GRANT ALL PRIVILEGES ON uygulama_db.* TO 'veritabani_kullanici'@'192.168.1.25';
Dikkat
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.

FLUSH PRIVILEGES;

Bu işlem kullanıcı ve yetki bilgilerinin yeniden yüklenmesini sağlar.

Bilgi
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)

sudo ufw allow 3306/tcp

AlmaLinux / Rocky Linux / CentOS (firewalld)

sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload
Dikkat
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

sudo systemctl restart mysql

AlmaLinux / Rocky Linux / CentOS

sudo systemctl restart mysqld

Servis yeniden başladıktan sonra MySQL sunucunuz uzak bağlantıları kabul etmeye hazır olacaktır.

İpucu
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.

mysql -h Sunucu_IP_Adresi -u veritabani_kullanici -p

Bağlantı başarılı olduğunda kullanıcı parolanız istenir ve ardından MySQL komut satırına giriş yapabilirsiniz.

İpucu
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ı
Bilgi
İ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.
Dikkat
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.
Uyarı
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.

# MySQL yapılandırma dosyasını düzenleme sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf # MySQL sunucusuna bağlanma mysql -u root -p # Yeni kullanıcı oluşturma CREATE USER 'veritabani_kullanici'@'192.168.1.25' IDENTIFIED BY 'GucluBirParola'; # Yetki verme GRANT , , , ON uygulama_db.* TO 'veritabani_kullanici'@'192.168.1.25'; # Yetkileri uygulama FLUSH PRIVILEGES; # Ubuntu / Debian sudo systemctl restart mysql # AlmaLinux / Rocky Linux / CentOS sudo systemctl restart mysqld

İ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.

Ürün sepete eklendi!