ฉันมีปัญหาในการเข้าถึงอินสแตนซ์ MySQL RDS

ฉันกำลังพยายามเชื่อมต่อกับอินสแตนซ์ RDS จากอินสแตนซ์ EC2 ทั้งอินสแตนซ์ RDS และอินสแตนซ์ EC2 นั้นอยู่ภายใน VPC เดียวกัน myVPC ฉันได้ยืนยันโดยตรวจสอบว่า VPC อยู่ภายใต้อินสแตนซ์ RDS และอินสแตนซ์ RC2 ตรงกัน

คำถามส่วนใหญ่เกี่ยวกับปัญหานี้ที่ฉันพบว่าเกี่ยวข้องกับกลุ่มความปลอดภัย ผู้ใช้หลายคนประสบปัญหานี้และปัญหาของพวกเขาได้รับการแก้ไขโดยการทำให้แน่ใจว่ากลุ่มความปลอดภัย VPC ที่เชื่อมโยงกับอินสแตนซ์ RDS นั้นเหมือนกับอินสแตนซ์ EC2 ของพวกเขา ในกรณีของฉัน อินสแตนซ์ทั้งสองอยู่ใน VPC เดียวกันและใช้กลุ่มความปลอดภัยเดียวกัน ภายในกลุ่มความปลอดภัยนี้ ฉันมีกฎที่อนุญาตการรับส่งข้อมูลขาเข้าทั้งหมดผ่าน IP แบบเต็มช่วงของ VPC ของฉัน (เช่น 172.35.0.0/16) ในความพยายามที่จะทำให้มันทำงาน ฉันอนุญาตให้ทราฟฟิกทั้งหมดข้ามพอร์ตทั้งหมดจากที่อยู่ IP ทั้งหมดสำหรับกลุ่มความปลอดภัยนี้ สิ่งนี้ยังไม่ได้ผล

การอ่านเอกสารบางส่วนแนะนำว่าควรตรวจสอบให้แน่ใจว่าซับเน็ตของคุณเชื่อมโยงกับตารางเส้นทางเดียวกันกับ VPC ของคุณ ฉันทำได้โดยไปที่ตารางเส้นทางที่เชื่อมโยงซับเน็ตทั้งหมดภายใน myVPC กับตารางเส้นทางนี้

ฉันได้ลองใช้ทั้งแบบมีและไม่มี IP แบบยืดหยุ่น ฉันสามารถเชื่อมต่อกับอินสแตนซ์ EC2 ของฉันด้วยที่อยู่ IP แบบยืดหยุ่นได้

ฉันรู้ว่าคำถามนี้ถูกถามค่อนข้างมาก ณ ตอนนี้ฉันยังไม่เจอวิธีแก้ปัญหาของฉัน

แก้ไข: เพิ่มรายละเอียดเพิ่มเติมของการตั้งค่าความปลอดภัย ทั้งอินสแตนซ์ ec2 และ RDS ใช้กลุ่มความปลอดภัยเดียวกัน ภายในกลุ่มความปลอดภัยนั้นมีบรรทัดที่เขียนว่า

MYSQL TCP 3306 172.35.0.0/16 ช่วง CIDR ของฉัน

ฉันเพิ่ม

MYSQL TCP 3306 172.35.0.1/32 IP ส่วนตัวของอินสแตนซ์ ec2 ของฉัน

ไม่มีสิ่งใดข้างต้นทำงาน

DID ทำงานอะไรภายใต้การตั้งค่า ACL เครือข่ายของฉัน ฉันเปลี่ยนบรรทัดจาก

1 MySQL(3306) TCP(6) 3306 172.35.0.1/32 ALLOW

ถึง

1 ALL TRAFFIC ALL ALL 0.0.0.0/32 ALLOW

ปัญหาของฉันได้รับการแก้ไขแล้ว แต่ตอนนี้ฉันมีคำถามอื่น ฉันจะหลีกเลี่ยงการเปิด 3306 สำหรับการเชื่อมต่อขาเข้าทั้งหมดได้อย่างไร ฉันอาจโพสต์สิ่งนี้เป็นคำถามใหม่และเชื่อมโยงที่นี่

answer

ฉันมีปัญหานี้เองเมื่อสองสามสัปดาห์ก่อน ในกรณีของฉัน ฉันลืมอนุญาตการรับส่งข้อมูลขาออกบนพอร์ต 3306 สำหรับอินสแตนซ์ EC2 ของฉันไปยัง VPC CIDR ลองเพิ่มกฎขาออกให้กับกลุ่มความปลอดภัยอินสแตนซ์ EC2 ของคุณโดยมีลักษณะดังนี้:

Type    Protocol    Port Range    Destination
MYSQL   TCP         3306          172.35.0.0/16

คุณแน่ใจหรือไม่ว่าฐานข้อมูลของคุณอยู่ใน VPC ที่มีอินสแตนซ์ EC2 ของคุณ สมมติว่าสร้างกลุ่มความปลอดภัยที่อนุญาต 3306 ขาเข้าจากช่วง CIDR สำหรับ VPC ของคุณ

หากต้องการทดสอบด้วยวิธีที่คุ้นเคยกว่าเล็กน้อย คุณสามารถสร้างอินสแตนซ์ชั่วคราวด้วย MySQL ได้ ควรทำงานในลักษณะเดียวกันตราบเท่าที่ยังอยู่ใน VPC ของคุณด้วย

ตรวจสอบให้แน่ใจว่า RDS ของคุณอยู่ในกลุ่มเครือข่ายย่อยที่สามารถเข้าถึงได้จากเครื่องอื่นใน VPC ของคุณ เช่น ตรวจสอบว่าคุณสามารถกำหนดเส้นทางระหว่างเครือข่ายย่อยได้หากคุณเป็นหลาย AZ เป็นต้น

อัปเดต: ลองใช้ VPC IP ไม่ใช่ชื่อ DNS ภายนอกเพื่อเข้าถึง DNS ของคุณอาจชี้ไปที่ที่อยู่เครือข่ายภายนอกหรืออาจล้มเหลว

หลังจากพยายามหาทางแก้ไขปัญหาเดียวกันอยู่นาน ฉันก็ต้องการให้สิ่งที่ดูเหมือนจะใช้ได้ผล เดิมทีฉันมี RDS และอินสแตนซ์ EC2 ที่มีกลุ่มความปลอดภัยต่างกัน

หลังจากอัปเดต RDS เพื่อใช้กลุ่มความปลอดภัย VPC ฉันยังไม่สามารถเชื่อมต่อได้ สิ่งที่ใช้งานได้ในที่สุดคือเมื่อฉันเพิ่มกฎขาเข้าสำหรับพอร์ต 3306 สำหรับช่วง CDIR บน VPC ของฉันตามที่ตอบโดย @TheFiddlerWins

กลุ่มความปลอดภัย VPC ควรสรุปกฎนั้นไว้อย่างน่าผิดหวังจนฉันพูดไม่ได้ว่าทำไมถึงใช้ได้ผล แต่หลังจากนั้นก็ใช้ได้

ผมมีปัญหาเหมือนกัน. ฉันกำลังใช้อินสแตนซ์ขนาดเล็กที่มีระดับฟรีสำหรับการทดสอบ หาก RDS และ EC2 ของคุณไม่อยู่ในโซนความพร้อมใช้งานเดียวกัน คุณจะต้องใช้ IP สาธารณะ หากอยู่ในโซนเดียวกันหรือมีการใช้ EC2 ร่วมกันระหว่างหลายโซน คุณสามารถใช้ IP ส่วนตัวได้