ฉันพยายามที่จะสร้างผู้ใช้ MySQL ซึ่งจะได้รับอนุญาตให้เชื่อมต่อกับฐานข้อมูล MySQL จากชื่อโฮสต์ที่เฉพาะเจาะจง
ให้สิทธิ์ทั้งหมดบน db_name. * เป็น 'user_name'@'appserver-lan.mydomain.com' ที่ระบุโดย 'some_passwd'
โดยการตรวจสอบตารางผู้ใช้บนฐานข้อมูล mysql ฉันจะเห็นว่าผู้ใช้สร้างเสร็จเรียบร้อยแล้ว:
ใช้ mysql; เลือก * จากผู้ใช้ที่ผู้ใช้ = 'user_name' และโฮสต์ = 'appserver-lan.mydomain.com'
หรือ
แสดงทุนสำหรับ 'username'@'appserver-lan.mydomain.com'
ชื่อโฮสต์ที่ฉันระบุเป็นชื่อแทนชื่อ amazon-ec2 ซึ่งเมื่อแก้ไขโดยเซิร์ฟเวอร์ AWS DNS จะส่งผลให้มีที่อยู่ LAN:
[root @ db_server ~] # host appserver-lan.mydomain.com
appserver-lan.mydomain.com เป็นชื่อแทนสำหรับ ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com ec2-xxx-xxx-xxx-xxx-xxx-xxx.compute-1.amazonaws.com มีที่อยู่ 10.xxx .xxx.xxx
ปัญหาคือเมื่อฉันพยายามเชื่อมต่อกับฐานข้อมูล LAN IP จาก appserver-lan นี้ฉันได้รับข้อผิดพลาดการเข้าถึงถูกปฏิเสธแม้ว่ารหัสผ่านจะถูกต้อง สิ่งประหลาดนี่คือชื่อโฮสต์ที่แสดงในข้อผิดพลาดไม่ใช่ชื่อโฮสต์ที่ฉันได้ระบุไว้เมื่อผู้ใช้ถูกสร้างขึ้น:
ข้อผิดพลาด 1045 (28000): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'user_name' @ ' appserver.mydomain.com ' (ใช้รหัสผ่าน: YES)
ดังนั้นคำถามของฉันคือ mysql กำหนดชื่อโฮสต์ของลูกค้าอย่างไร ฉันเชื่อว่ามันไม่ได้ทำโดยการค้นหา DNS ย้อนกลับเนื่องจากฉันตรวจสอบแล้วและไม่ได้ชี้ไปที่ "appserver.mydomain.com" ไม่ใช่ "appserver-lan.mydomain.com" นอกจากนี้เซิร์ฟเวอร์ db ไม่มีรายการที่เกี่ยวข้องกับ appserver บน / etc / hosts
สรุปฉันค่อนข้างแน่ใจว่ามันเป็นปัญหาการแก้ปัญหาชื่อโฮสต์เนื่องจากการให้สิทธิ์พิเศษสำหรับโฮสต์ "%" หรือ LAN IP นั้นใช้งานได้ดี
ความคิดใด ๆ ของสิ่งที่ฉันหายไป?
host -t PTR 10.1.2.3
?