Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
MySQL host, uygulamanın bağlanacağı MySQL sunucusunun bulunduğu makinenin adresidir. Bu adres aynı bilgisayardaki bağlantı için localhost veya 127.0.0.1, başka bir sunucu içinse bir alan adı ya da IP adresi olabilir. Host; veritabanı adını, kullanıcı adını veya parolayı değil, MySQL hizmetinin hangi makinede aranacağını belirtir.

Host değeri nasıl çalışır?​


Bir bağlantı kurulurken istemci genellikle şu bilgileri kullanır:

  • Host: MySQL sunucusunun makine adresi.
  • Port: MySQL hizmetinin dinlediği bağlantı kapısı. Kullanılmadığında istemcinin varsayılan ayarı kullanılır.
  • Kullanıcı: MySQL içindeki hesap adı.
  • Parola: Bu hesabın kimlik doğrulama bilgisi.
  • Veritabanı: Bağlantıdan sonra kullanılacak veritabanı.

Örneğin uygulama ile MySQL aynı bilgisayarda çalışıyorsa host çoğunlukla localhost olur. MySQL ayrı bir sunucuda çalışıyorsa host, o sunucunun ağdaki adı veya adresidir. Örnek olarak db.example.com ya da dokümantasyon için ayrılmış 192.0.2.10 kullanılabilir.

Yaygın host değerlerinin anlamı​


Aşağıdaki ayrım, bağlantı hatasının ağdan mı yoksa MySQL hesabından mı kaynaklandığını anlamayı kolaylaştırır.

Host değeriGenel anlamıNe zaman denenir?
localhostAynı makinedeki MySQL hizmetiUygulama ve MySQL aynı sunucudaysa
127.0.0.1Aynı makinenin IPv4 loopback adresiTCP üzerinden yerel bağlantı özellikle denenmek istendiğinde
db.example.comAğdaki MySQL sunucusunun alan adıMySQL başka bir makinedeyse
192.0.2.10Örnek amaçlı IPv4 adresiGerçek adres yerine dokümantasyon örneği gerektiğinde

localhost ile 127.0.0.1 her durumda tamamen eş anlamlı davranmayabilir. MySQL istemcileri Unix ve Linux sistemlerde localhost için çoğu zaman yerel soket bağlantısını, 127.0.0.1 için TCP bağlantısını kullanabilir. Bu nedenle biri çalışırken diğeri çalışmıyorsa sorun host adından çok kullanılan bağlantı yönteminde, portta veya soket ayarında olabilir.

Bağlantı ayarını doğru belirleme​


Önce MySQL sunucusunun uygulamayla aynı makinede mi, ayrı bir makinede mi çalıştığını belirleyin. Sonra bağlantı ayarını buna göre doldurun:

  1. MySQL ve uygulama aynı makinedeyse host olarak önce localhost kullanın. TCP bağlantısını açıkça denemek gerekiyorsa 127.0.0.1 değerini seçin.
  2. MySQL başka bir makinedeyse sunucunun gerçek DNS adını veya ağ adresini host alanına yazın. Örneğin db.example.com yalnızca örnek bir addır; kendi ortamınızdaki adresle değiştirilmelidir.
  3. Port ayarını MySQL sunucusunun yapılandırmasıyla eşleştirin. Host doğru olsa bile yanlış port bağlantının kurulmasını engeller.
  4. Kullanıcı, parola ve veritabanı adını ayrıca kontrol edin. Hostun doğru olması, kullanıcının bağlanma yetkisi olduğu anlamına gelmez.

Aşağıdaki uzak bağlantı örneği MySQL 8.4 istemcisi, db.example.com adına uygun sunucu sertifikası ve istemcide güvenilen CA dosyası hazırsa kullanılabilir. Alan adı ve CA yolu temsilîdir; parola komut satırına yazılmaz:

Kod:
mysql --host=db.example.com --port=3306 --ssl-mode=VERIFY_IDENTITY --ssl-ca=/guvenli-yol/ca.pem --user=uygulama_kullanicisi -p uygulama_veritabani

Komut parola sorarsa parola istemi gösterilir. Başarılı bağlantıda MySQL istemi açılır ve sorgu çalıştırabilirsiniz. "Can't connect" veya benzeri bir bağlantı hatası alırsanız önce host adı, DNS çözümlemesi, sunucunun çalışması, port ve ağ erişimini inceleyin. "Access denied" hatası alırsanız sunucuya ulaşılmıştır; bu kez kullanıcı, parola veya hesabın bağlandığı host için yetkilendirme ayarlarını kontrol edin.

Sık yapılan hatalar​


Veritabanı adını host sanmak: eticaret gibi bir ad veritabanı olabilir; MySQL sunucusunun adresi değildir. Host alanına sunucunun makine adı yazılmalıdır.

Her durumda localhost kullanmak: Uygulama başka bir sunucudaysa localhost uygulamanın bulunduğu makineyi gösterir. MySQL'in bulunduğu makineyi göstermez.

IP adresini kullanıcı yetkisiyle karıştırmak: MySQL hesabının hangi istemci hostundan bağlanabileceği ayrıca sınırlandırılabilir. Doğru hosta ulaşmak ile hesabın o hosttan giriş yapabilmesi farklı konulardır.

localhost ve 127.0.0.1 farkını yok saymak: Yerel soket ve TCP davranışları farklı olabileceğinden, bir değer çalışmadığında diğerini kontrollü biçimde denemek teşhis için yararlı olabilir. Soket ile TCP denemesinde hangi taşımanın seçildiğini not edin; Unix soketi kullanılırken TCP portu aynı şekilde uygulanmaz. Sorunu çözmek için MySQL portunu herkese açmayın.

Sık sorulan sorular​

Docker içindeki localhost neden veritabanına ulaşmıyor?​

Uygulama konteynerinde localhost o ağ ad alanını gösterir; başka konteynerdeki MySQL’i otomatik göstermez. Ortak ağdaki hizmet adını ve uygulamanın gördüğü portu kullanın. Konteyner adı ile dışarı yayımlanmış portu rastgele birbirine karıştırmayın.

MySQL hesabındaki user@host ile bağlantı hostu aynı mı?​

Bağlantı hostu hedef sunucuyu belirtir. MySQL hesabındaki host bölümü ise o hesabın hangi istemci konumundan bağlanabileceğinin eşleştirilmesine katılır. Aynı kullanıcı adı farklı host bölümleriyle ayrı hesap olabilir; hedef adrese erişmek tek başına hesap izni sağlamaz.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic