- Konu sahibi
- #1
MySQL host, uygulamanın bağlanacağı MySQL sunucusunun bulunduğu makinenin adresidir. Bu adres aynı bilgisayardaki bağlantı için
Bir bağlantı kurulurken istemci genellikle şu bilgileri kullanır:
Örneğin uygulama ile MySQL aynı bilgisayarda çalışıyorsa host çoğunlukla
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.
Önce MySQL sunucusunun uygulamayla aynı makinede mi, ayrı bir makinede mi çalıştığını belirleyin. Sonra bağlantı ayarını buna göre doldurun:
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:
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.
Veritabanı adını host sanmak:
Her durumda localhost kullanmak: Uygulama başka bir sunucudaysa
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.
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ğeri | Genel anlamı | Ne zaman denenir? |
|---|---|---|
localhost | Aynı makinedeki MySQL hizmeti | Uygulama ve MySQL aynı sunucudaysa |
127.0.0.1 | Aynı makinenin IPv4 loopback adresi | TCP üzerinden yerel bağlantı özellikle denenmek istendiğinde |
db.example.com | Ağdaki MySQL sunucusunun alan adı | MySQL başka bir makinedeyse |
192.0.2.10 | Örnek amaçlı IPv4 adresi | Gerç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:
- MySQL ve uygulama aynı makinedeyse host olarak önce
localhostkullanın. TCP bağlantısını açıkça denemek gerekiyorsa127.0.0.1değerini seçin. - MySQL başka bir makinedeyse sunucunun gerçek DNS adını veya ağ adresini host alanına yazın. Örneğin
db.example.comyalnızca örnek bir addır; kendi ortamınızdaki adresle değiştirilmelidir. - 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.
- 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.