Mengapa saya tidak dapat terhubung ke Amazon RDS setelah mengaturnya?

43

Jadi, saya baru saja membuat akun Amazon RDS. Dan saya mulai contoh database.

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

Bagus! Sekarang saya mencoba untuk terhubung dari salah satu contoh EC2 saya yang lain.

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

Tapi tidak ada yang berhasil dan hanya hang.

Saya mencoba untuk melakukan ping, dan tidak ada yang berhasil. Tidak ada yang terjadi.

Apakah saya perlu mengubah beberapa pengaturan?

Alex
sumber

Jawaban:

45

Secara default RDS tidak mengizinkan koneksi apa pun yang tidak ditentukan dalam Grup Keamanan (SG). Anda dapat mengizinkan berdasarkan pengalamatan CIDR atau dengan nomor akun Amazon yang memungkinkan EC2 mana pun di bawah akun itu untuk mengaksesnya.

Jeremy Bouse
sumber
27

Itu "hanya menggantung" karena Anda belum mengkonfigurasi firewall untuk menerima koneksi mySQL dari instance Anda yang lain, karena paket tersebut sedang dijatuhkan di tingkat firewall, untuk menyelesaikan ini Anda perlu:

  1. kepala ke konsol AWS Anda
  2. Tab EC2
  3. Catat grup keamanan server mySQL Anda (sebut saja SG-MYSQL ini sekarang)
  4. klik grup keamanan di sebelah kiri konsol
  5. klik grup Anda di menu tengah SG-MYSQL
  6. klik tab masuk
  7. pilih mySQL dari daftar, tambahkan detail server klien Anda dan simpan aturannya

CATATAN IP sumber untuk server tidak akan menjadi IP elastis Anda (dalam banyak kasus) Anda akan memiliki ip internal pada perangkat (ifconfig di linux akan menunjukkan ini kepada Anda).

Oneiroi
sumber
1
Saya sudah melakukannya di server EC2 saya. Saya sudah membuka semua port standar.
Alex
1
Saya tidak punya instance EC2 dan RDS saya tidak dapat terhubung ke dunia luar sampai saya melakukan ini.
Umair A.
1
titik yang sangat baik untuk menggunakan IP elastis!
user1641443
1
Terima kasih untuk ini. Panduan ini telah membuat semua perbedaan!
Tn.
1
Membuat akun karena kesalahan server hanya untuk mengunggahnya. TERIMA KASIH.
CaptainMarvel
7

Banyak pembicaraan di sini tentang grup keamanan, tetapi juga periksa:

  • Apakah Subnet terkait tampaknya dikonfigurasi dengan benar?
  • Apakah Subnet bagian dari Grup Perutean yang tampaknya dikonfigurasi dengan benar (Internet Gateway ditentukan, dll?)
  • Apakah RDS mengatakan itu Dapat Diakses Publik?
  • Dan tentu saja periksa Grup Keamanan RDS dan Grup Keamanan EC2
    • Jangan lupa IP sumber Anda yang sebenarnya mungkin IP internal (jika mengakses secara internal melalui VPC) atau IP eksternal (yang mungkin IP router, atau IP Instance instance EC2 yang berbeda dari Load Balancer / Elastic IP) - untuk memecahkan masalah, Anda dapat mencoba untuk mengizinkan akses ke semua IP dan porta.

(Grup routing adalah masalah saya; dalam membuat subnet baru, saya lalai menambahkannya ke grup routing dengan gateway.)

willbradley
sumber
Untuk memperjelas: SEMUA subnet yang Anda pilih dalam grup subnet RDS harus memiliki tabel perutean yang memiliki gateway internet yang ditentukan. Masalah saya adalah bahwa dua dari subnet yang saya pilih adalah subnet "pribadi" saya, yang memiliki gateway NAT yang ditentukan untuk lalu lintas keluar daripada gateway internet, dan RDS kebetulan memilih server di salah satu subnet itu. Rujuk ke artikel ini jika Anda tidak terlalu akrab dengan perutean: medium.com/@mda590/aws-routing-101-67879d23014d
timetofly
Saya terpengaruh oleh masalah yang sama dengan @timetofly. Saya memiliki pekerjaan satu kali yang saya putuskan untuk dijalankan pada ECS Fargate, yang mengharuskan NAT untuk mengunduh file. Menyiapkan NAT memutuskan koneksi saya ke RDS dari laptop saya. Ketika pekerjaan selesai, saya memperbarui subnet saya untuk hanya menggunakan Internet Gateway, dan saya baik-baik saja.
vitale232
4

Tetap.

Harus memberikan akses ke sana dalam kelompok keamanan di bawah DB ...

Alex
sumber
6
Bisakah Anda menguraikan apa yang Anda lakukan untuk memberikan akses?
David Csonka
1
Database saya memiliki grup keamanan dengan satu aturan. Izinkan akses dari MANA SAJA ke port 1433. Saya tidak bisa terhubung -_-
The Muffin Man
1

Saya memiliki masalah yang sama;

  1. Grup Keamanan> rds-launch-wizard (atau nama apa pun yang dipilih untuk db SG)
  2. pilih tab Masuk> edit
  3. tambahkan peran baru
  4. MySQL
  5. Sumber -> masukkan aws vm ip (untuk mis: 12.3.14.80/32)

bekerja untukku ...

loudstil
sumber
1

Dalam upaya untuk membuka keamanan sepenuhnya untuk pengujian sebelum mengunci akses, baik instance database saya dan instance EC2 saya menggunakan grup keamanan yang sama, dan port inbound dan outbound 3306 dikonfigurasikan untuk memungkinkan koneksi dari mana saja. Masalahnya - saya dapat terhubung ke Aurora dari notebook saya tetapi anehnya bukan dari instance EC2 saya, seolah-olah instance EC2 tidak di mana saja. Solusinya adalah dengan menambahkan aturan mysql / Aurora masuk lainnya dan tentukan id grup keamanan yang sama sebagai sumber untuk koneksi masuk. Grup keamanan saya memiliki aturan yang mengacu pada dirinya sendiri, dan saya dapat terhubung dari notebook saya atau instance EC2 saya.

John Dimm
sumber
-3

aturan inbound mysql harus seperti di bawah ini

gambar ini adalah masalah dengan grup keamanan.

Nirmal Dhara
sumber
3
Apakah ada alasan Anda menabrak pertanyaan lima tahun untuk menjawabnya dengan jawaban yang sama yang sudah ada selama bertahun-tahun? Memberikan 0.0.0.0/0akses ke 3306juga bukan ide bagus.
ceejayoz
saya mencoba menunjukkan kepada pengguna apa yang harus mereka ubah dan bagaimana mereka dapat berubah, Anda tahu ada banyak pengguna seperti saya tidak dapat menyelesaikan masalah dengan membaca ans di atas. mungkin tidak membantu Anda tetapi ada pengguna yang mencari ini. Anda memberikan suara karena itu tidak membantu Anda.
Nirmal Dhara
3
Downvote saya berasal dari mengatakan orang harus membuka MySQL ke seluruh internet. Itu pendekatan yang berbahaya.
ceejayoz
Saya mendapatkannya. saya hanya menunjukkan tempat di mana mereka dapat mengedit grup keamanan, mereka dapat memilih dari dropdown apa pun yang mereka inginkan.
Nirmal Dhara