Mysql istemcilerinin ana bilgisayar adını nasıl belirler?


14

Yalnızca belirli bir ana bilgisayar adından MySQL veritabanına bağlanmasına izin verilecek bir MySQL kullanıcısı oluşturmaya çalışıyorum.

db_name. * 'de' some_passwd 'ile tanımlanan' user_name'@'appserver-lan.mydomain.com 'adresine hepsini verin

Mysql db kullanıcı tablosunu kontrol ederek, kullanıcının başarıyla oluşturulduğunu görebilirsiniz:

mysql kullanın; Kullanıcı = 'kullanıcı_adı' ve Ana Bilgisayar = 'appserver-lan.alan_adim.com.tr' adlı kullanıcıdan * seçin

veya

'kullaniciadi'@'appserver-lan.alanadim.com' için hibeleri göster

Belirttiğim ana bilgisayar adı, AWS DNS sunucuları tarafından çözüldüğünde bir LAN adresi ile sonuçlanan amazon-ec2 adının takma adıdır:

[root @ db_server ~] # host appserver-lan.alan_adim.com.tr

appserver-lan.mydomain.com, ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com için bir takma addır ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com adresinde 10.xxx vardır .xxx.xxx

Sorun, bu appserver-lan veritabanı LAN IP bağlanmaya çalıştığınızda, şifre doğru olmasına rağmen, erişim reddedildi hatası alıyorum. Buradaki garip şey , hatada gösterilen ana bilgisayar adının, kullanıcı oluşturulduğunda belirttiğim ana bilgisayar adı olmamasıdır:

HATA 1045 (28000): 'kullanıcı_adı' @ ' appserver.alan_adim.com.tr ' kullanıcısı için erişim reddedildi (şifre kullanarak: YES)

Benim sorum: mysql istemci ana bilgisayar adını nasıl belirler? Ben kontrol beri ve "appserver.mydomain.com" ne "appserver-lan.mydomain.com" için işaret değil, ters bir DNS arama tarafından bunu inanmıyorum. Ayrıca, db sunucusu / etc / hosts üzerinde appserver ile ilgili hiçbir girdi yok.

Özetle, ana bilgisayar adı çözümleme sorunu olduğundan eminim, çünkü "%" ana bilgisayarına veya LAN IP'ye ayrıcalık vermek gayet iyi çalışıyor.

Kaçırdığım şey hakkında bir fikrin var mı?


Neden ters DNS olmadığını düşünüyorsunuz? Yaptığınızda ne olur host -t PTR 10.1.2.3?
Zoredache

host -t PTR 10.xxx.xxx.xxx xxx.xxx.xxx.10.in-addr.arpa alan adı işaretçisi ip-10-xxx-xxx-xxx.ec2.internal. Gördüğünüz gibi, bu, hata iletisinde (appserver.etkialanim.com) gösterilen ana bilgisayar adı değil ve bu da MySQL'in ters arama yapmadığını düşündürdü.
Luis Fernando Alen

Yanıtlar:


13

Ters DNS araması kullanır. İstemcinin IP adresini alır ve bu ad için döndürülen PTR kaydını kullanır.

Bence isme dayalı kimlik doğrulaması yapmak çok yararlı değil, bunun yerine IP adreslerini kullanmayı düşünmenizi öneririm.

Mysql'nin DNS'yi nasıl kullandığı hakkında bu belgeye bakın .


Bağlantı için teşekkürler, @Zoredache. IP adreslerini kullanmaktan kaçınmak istiyorum, çünkü AWS dahili arayüzü DHCP kullanıyor ve IP'si zaman zaman değişiyor (sunucu her açıldığında, sanırım) ve PTR kaydı. Buradaki garip şey, geriye doğru aramaları kullandığından, "@ ip-10-xxx-xxx-xxx.ec2.internal kullanıcısı için erişim reddedildi" demelidir. appserver.alan_adim.com.tr yerine
Luis Fernando Alen

1
IP / ad kimlik doğrulamasını tamamen atlayabilir, bunun yerine ana bilgisayar tabanlı bir güvenlik duvarı kullanabilir veya SSL ve Sertifika tabanlı kimlik doğrulamasını kurabilirsiniz.
Zoredache

3

MySQL, ana bilgisayar adını almak için IP adresinde ters DNS araması yapacak. AWS EC2'de çalışıyorsanız, sunucunuza elastik bir IP atayabilirsiniz (bu ekstra ücrete tabi değildir) ve daha sonra Amazon'dan elastik IP'nin ana makine adınıza geçmesi için ters DNS ayarlamasını isteyebilirsiniz.

Ayrıca DB sunucunuz EC2'de de mi? Çünkü öyleyse, örneğin özel IP adresini kullanacak, aksi halde genel ip adresini kullanacaktır. Sen appserver-lan putlic olanı değil, sunucunuza atanan 10.XXX.XXX.XXX özel ip olduğu gibi yayın görünüyor.

Yalnızca aynı bölgede sunucularım olduğu için farklı bir bölgeyle iletişim kurarken hangi IP adresinin kullanılacağından emin değilim.


Evet, EC2'de ve aynı bölgede. Bahşiş için teşekkürler Andy. EC2 örnekleri iletişim için geçerli ip belirtseniz bile aralarında iletişim kurmak için dahili ip kullanmak bilmiyordum. Bu benim sorunumu çözdü =]
Luis Fernando Alen

3

Sadece benzer bir sorun yaşadım, burada mysql sunucusu ters DNS aramaları yanlış yapıyor gibi görünüyordu.

Sahip olduğum sorun, sunucunun 'user'@'1.2.3.4' ve 'user'@'reverse.dns' için izinlere sahip olmasıydı. Yalnızca IP adresine sahip kullanıcının minimum izinleri vardı, ancak mysql sunucusu ana makine adına sahip olandan ziyade kullanıcının izinlerini kullanıyor ve "Kullanıcı 'kullanıcı'@'1.2.3.4' kullanıcısı için erişim reddedildi" iletisini döndürüyordu. Kullanıcının IP adresiyle silinmesi sorunu çözdü ve sunucuyu diğer kullanıcıyı ana bilgisayar adında kullanmaya zorladı.


0

IPV4 ve IPV6 ana bilgisayar adlarının ve IP adreslerinin eşleşmediği ve ana bilgisayar adının yalnızca kullanıcı izni için kullanıldığı yerlerde de sorunlar gördüm. Örneğin, IPV6 ters DNS var ancak ileri IPV6 DNS yok.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.