Saya mencoba membuat pengguna MySQL yang hanya akan diizinkan untuk terhubung ke database MySQL dari nama host tertentu.
berikan semua pada db_name. * ke 'user_name'@'appserver-lan.mydomain.com' diidentifikasi oleh 'some_passwd'
Dengan memeriksa tabel pengguna di mysql db, saya dapat melihat bahwa pengguna berhasil dibuat:
gunakan mysql; pilih * dari pengguna di mana Pengguna = 'user_name' dan Host = 'appserver-lan.mydomain.com'
atau
tunjukkan hibah untuk 'username'@'appserver-lan.mydomain.com'
Nama host yang saya tentukan adalah alias untuk nama amazon-ec2, yang ketika diselesaikan oleh server DNS AWS menghasilkan alamat LAN:
[root @ db_server ~] # host appserver-lan.mydomain.com
appserver-lan.mydomain.com adalah alias untuk ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com ec2-xxx-xxx-xxx-xxx-xxx.compute-1.amazonaws.com memiliki alamat 10.xxx .xxx.xxx
Masalahnya adalah ketika saya mencoba untuk terhubung ke basis data LAN IP dari appserver-lan ini, saya mendapatkan kesalahan akses ditolak, meskipun kata sandi sudah benar. Yang aneh di sini adalah bahwa nama host yang ditampilkan dalam kesalahan bukanlah nama host yang saya tentukan ketika pengguna dibuat:
GALAT 1045 (28000): Akses ditolak untuk pengguna 'user_name' @ ' appserver.mydomain.com ' (menggunakan kata sandi: YES)
Jadi, pertanyaan saya adalah: bagaimana cara mysql menentukan nama host klien? Saya percaya itu tidak melakukannya dengan lookup DNS terbalik, karena saya memeriksa dan tidak menunjuk ke "appserver.mydomain.com" juga tidak ke "appserver-lan.mydomain.com". Selain itu, server db tidak memiliki entri yang terkait dengan appserver di / etc / hosts.
Meringkas, saya cukup yakin ini masalah resolusi nama host, karena memberikan hak istimewa untuk host "%" atau ke LAN IP berfungsi dengan baik.
Adakah ide tentang apa yang saya lewatkan?
host -t PTR 10.1.2.3
?