ทำไมฉันถึงเชื่อมต่อกับ Amazon RDS ไม่ได้หลังจากตั้งค่า?


43

ดังนั้นฉันเพิ่งสร้างบัญชี Amazon RDS และฉันเริ่มต้นอินสแตนซ์ของฐานข้อมูล

The "endpoint" is:
abcw3n-prod.cbmbuiv8aakk.us-east-1.rds.amazonaws.com

ที่ดี! ตอนนี้ฉันพยายามเชื่อมต่อจากอินสแตนซ์ EC2 อื่นของฉัน

mysql -uUSER -pPASS -habcw3n-prod.cbmbuiv8aakk.us-east-1.rds.amazonaws.com

แต่ไม่มีอะไรทำงานและมันก็หยุด

ฉันพยายาม ping มันและไม่มีอะไรทำงานเช่นกัน ไม่มีอะไรเกิดขึ้น.

ฉันจำเป็นต้องเปลี่ยนการตั้งค่าบางอย่างหรือไม่?

คำตอบ:


45

โดยค่าเริ่มต้น RDS ไม่อนุญาตการเชื่อมต่อใด ๆ ที่ไม่ได้ระบุไว้ในกลุ่มรักษาความปลอดภัย (SG) คุณสามารถอนุญาตตามการอ้างอิง CIDR หรือตามหมายเลขบัญชี Amazon ซึ่งจะอนุญาตให้ EC2 ใด ๆ ภายใต้บัญชีนั้นเข้าถึง


27

เป็น "เพียงแค่หยุดทำงาน" เนื่องจากคุณไม่ได้กำหนดค่าไฟร์วอลล์ให้ยอมรับการเชื่อมต่อ mySQL จากอินสแตนซ์อื่นของคุณเช่นแพ็คเก็ตจะถูกส่งไปที่ระดับไฟร์วอลล์เพื่อแก้ไขปัญหานี้คุณต้อง:

  1. มุ่งหน้าไปที่คอนโซล AWS ของคุณ
  2. แท็บ EC2
  3. จดบันทึกกลุ่มความปลอดภัยของเซิร์ฟเวอร์ mySQL ของคุณ (เรียก SG-MYSQL นี้ตอนนี้)
  4. คลิกกลุ่มความปลอดภัยทางด้านซ้ายของคอนโซล
  5. คลิกที่กลุ่มของคุณในเมนูกึ่งกลาง SG-MYSQL
  6. คลิกที่แท็บขาเข้า
  7. เลือก mySQL จากรายการเพิ่มรายละเอียดของเซิร์ฟเวอร์ลูกค้าของคุณและบันทึกกฎ

หมายเหตุ IP ต้นทางสำหรับเซิร์ฟเวอร์จะไม่ใช่ IP ยืดหยุ่นของคุณ (ในกรณีส่วนใหญ่) คุณจะมี IP ภายในบนอุปกรณ์ (ifconfig บน linux จะแสดงสิ่งนี้ให้คุณ)


1
ฉันทำสิ่งนั้นบนเซิร์ฟเวอร์ EC2 ของฉันแล้ว ฉันเปิดพอร์ตมาตรฐานทั้งหมดแล้ว
อเล็กซ์

1
ฉันไม่มีอินสแตนซ์ EC2 และ RDS ของฉันไม่สามารถเชื่อมต่อกับโลกภายนอกจนกว่าฉันจะทำสิ่งนี้
Umair A.

1
จุดที่ยอดเยี่ยมที่จะใช้ IP ยืดหยุ่น!
user1641443

1
ขอบคุณสำหรับสิ่งนี้. คำแนะนำแบบนี้ทำให้เกิดความแตกต่าง!
นาย T

1
สร้างบัญชีที่เซิร์ฟเวอร์เกิดข้อผิดพลาดเพียงเพื่อโหวต ขอขอบคุณ.
CaptainMarvel

7

พูดคุยเกี่ยวกับกลุ่มความปลอดภัยได้ที่นี่ แต่โปรดตรวจสอบ:

  • Subnets ที่เกี่ยวข้องมีการกำหนดค่าอย่างเหมาะสมหรือไม่
  • Subnets เป็นส่วนหนึ่งของ Routing Group ที่มีการกำหนดค่าอย่างเหมาะสมหรือไม่ (ระบุ Internet Gateway หรือไม่)
  • RDS บอกว่าสามารถเข้าถึงได้แบบสาธารณะหรือไม่?
  • และแน่นอนตรวจสอบ RDS Security Group และ EC2 Security Group
    • อย่าลืม IP ต้นทางจริงของคุณอาจเป็น IP ภายใน (หากเข้าถึงภายในผ่าน VPC) หรือ IP ภายนอก (ซึ่งอาจเป็น IP ของเราเตอร์หรืออินสแตนซ์ของอินสแตนซ์ของ EC2 ซึ่งแตกต่างจาก Load Balancer / Elastic IP) - เพื่อแก้ไขปัญหาคุณอาจลองอนุญาตการเข้าถึง IP และพอร์ตทั้งหมด

(กลุ่มสายงานการผลิตเป็นปัญหาของฉันในการสร้างเครือข่ายย่อยใหม่ฉันละเลยที่จะเพิ่มลงในกลุ่มสายงานการผลิตที่มีเกตเวย์)


ในการชี้แจง: เครือข่ายย่อยทั้งหมดที่คุณเลือกในกลุ่มเครือข่ายย่อย RDS ควรมีตารางเส้นทางที่ระบุอินเทอร์เน็ตเกตเวย์ไว้ ปัญหาของฉันคือซับเน็ตสองตัวที่ฉันเลือกคือซับเน็ต "ส่วนตัว" ของฉันซึ่งมีเกตเวย์ NAT ที่ระบุไว้สำหรับทราฟฟิกขาออกมากกว่าอินเทอร์เน็ตเกตเวย์และ RDS เกิดขึ้นเพื่อเลือกเซิร์ฟเวอร์ในหนึ่งในเครือข่ายย่อยเหล่านั้น อ้างถึงบทความนี้หากคุณไม่คุ้นเคยกับการจัดเส้นทาง: medium.com/@mda590/aws-routing-101-67879d23014d
กำหนดเวลา

ฉันได้รับผลกระทบจากปัญหาเดียวกันกับ @timetofly ฉันมีงานครั้งเดียวที่ฉันตัดสินใจใช้กับ ECS Fargate ซึ่งต้องการ NAT เพื่อดาวน์โหลดไฟล์ การตั้งค่า NAT ทำให้การเชื่อมต่อ RDS ของฉันขาดจากแล็ปท็อปของฉัน เมื่องานเสร็จฉันได้อัปเดตเครือข่ายย่อยของฉันเพื่อใช้อินเทอร์เน็ตเกตเวย์เท่านั้นและฉันก็สบายดี
vitale232

4

แก้ไขแล้ว.

ต้องให้สิทธิ์การเข้าถึงแก่กลุ่มรักษาความปลอดภัยภายใต้ฐานข้อมูล ...


6
คุณอธิบายรายละเอียดเกี่ยวกับสิ่งที่คุณทำเพื่ออนุญาตการเข้าถึง
David Csonka

1
ฐานข้อมูลของฉันมีกลุ่มความปลอดภัยที่มีกฎเดียว อนุญาตการเข้าถึงจากที่ใดก็ได้ไปยังพอร์ต 1433 ฉันไม่สามารถเชื่อมต่อ -_-
The Muffin Man

1

ฉันมีปัญหาเดียวกัน

  1. กลุ่มความปลอดภัย> rds-launch-wizard (หรือชื่อใด ๆ ที่เลือกไว้สำหรับ db SG)
  2. เลือกแท็บขาเข้า> แก้ไข
  3. เพิ่มบทบาทใหม่
  4. MySQL
  5. แหล่งที่มา -> แทรก aws vm ip (ตัวอย่างเช่น: 12.3.14.80/32)

ทำงานให้ฉัน ...


1

ในความพยายามที่จะเปิดการรักษาความปลอดภัยอย่างสมบูรณ์สำหรับการทดสอบก่อนล็อคอินสแตนซ์ฐานข้อมูลของฉันและอินสแตนซ์ EC2 ของฉันใช้กลุ่มความปลอดภัยเดียวกันและทั้งพอร์ตขาเข้าและขาออก 3306 ได้รับการกำหนดค่าเพื่ออนุญาตการเชื่อมต่อจากทุกที่ ปัญหา - ฉันสามารถเชื่อมต่อกับ Aurora จากสมุดบันทึกของฉันได้ แต่ไม่น่าแปลกใจพอจากอินสแตนซ์ EC2 ของฉันราวกับว่าอินสแตนซ์ EC2 ไม่ได้อยู่ที่ใด วิธีแก้ไขคือเพิ่มกฎ mysql / Aurora ขาเข้าอีกอันและระบุid กลุ่มความปลอดภัยเดียวกันกับแหล่งที่มาสำหรับการเชื่อมต่อขาเข้า กลุ่มความปลอดภัยของฉันมีกฎที่อ้างถึงตัวเองและฉันสามารถเชื่อมต่อได้จากทั้งโน้ตบุ๊กหรืออินสแตนซ์ EC2 ของฉัน


-3

กฎขาเข้า mysql ควรเป็นดังนี้

ภาพ นี่เป็นปัญหาของกลุ่มความปลอดภัย


3
มีเหตุผลที่คุณชนคำถามอายุห้าขวบเพื่อตอบด้วยคำตอบเดียวกันกับที่มีมานานหลายปีหรือไม่? การ0.0.0.0/0เข้าถึง3306ไม่ใช่ความคิดที่ดีเช่นกัน
ceejayoz

ฉันพยายามแสดงให้ผู้ใช้เห็นว่าควรเปลี่ยนแปลงอะไรและพวกเขาสามารถเปลี่ยนแปลงได้อย่างไรคุณรู้ว่ามีผู้ใช้จำนวนมากอย่างฉันไม่สามารถแก้ปัญหาได้ด้วยการอ่านคำตอบข้างต้น อาจไม่ช่วยคุณ แต่มีผู้ใช้ที่กำลังมองหาสิ่งนี้ คุณให้คะแนนลงเพราะไม่ได้ช่วยคุณ
Nirmal Dhara

3
downvote ของฉันมาจากการบอกว่าผู้คนควรเปิด MySQL สู่อินเทอร์เน็ตทั้งหมด มันเป็นวิธีที่อันตราย
ceejayoz

ฉันเข้าใจแล้ว. ฉันแค่แสดงสถานที่ที่พวกเขาสามารถแก้ไขกลุ่มความปลอดภัยพวกเขาสามารถเลือกจากสิ่งที่พวกเขาต้องการแบบเลื่อนลง
Nirmal Dhara
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.