Pymysql err operationalerror 2003 tidak dapat terhubung ke server mysql pada waktu habis

Ada sejumlah akar penyebab ketidakmampuan untuk terhubung ke instans DB Amazon RDS. Berikut adalah beberapa alasan yang lebih umum

  • Instans DB RDS dalam keadaan selain tersedia, sehingga tidak dapat menerima koneksi
  • Sumber Anda untuk terhubung ke instans DB tidak memiliki akses otorisasi di grup keamanan, daftar kontrol akses jaringan (ACL), atau firewall lokal Anda
  • Nama DNS atau titik akhir yang salah digunakan untuk terhubung ke instans DB
  • Instans DB Multi-AZ gagal, dan instans DB sekunder menggunakan subnet atau tabel rute yang tidak mengizinkan koneksi masuk
  • Autentikasi pengguna salah karena salah satu alasan berikut
    • Anda menggunakan nama pengguna atau sandi yang salah di tingkat database untuk mengakses instans dari klien DB
    • Anda tidak memiliki izin database yang diperlukan untuk mengakses instance
    • Klien berjalan pada versi yang tidak kompatibel dengan versi database

Tip. Anda dapat menggunakan langkah pemecahan masalah berikut untuk mengidentifikasi sumber masalah konektivitas. Atau Anda dapat menggunakan dokumen AWSSupport-TroubleshootConnectivityToRDS AWS Systems Manager Automation untuk mendiagnosis masalah bagi Anda. Dokumen otomatisasi ini dapat mendiagnosis ACL jaringan berdasarkan alamat IP primer dari instans Amazon Elastic Compute Cloud (Amazon EC2). Namun, port sesaat tidak diverifikasi. Dokumen otomatisasi juga memeriksa grup keamanan berdasarkan alamat IP utama instans EC2, tetapi otomatisasi tersebut tidak memeriksa port tertentu. Untuk informasi selengkapnya, lihat Menjalankan otomatisasi

Resolusi

Pastikan instans DB Anda dalam status tersedia

Jika Anda baru saja meluncurkan atau mem-boot ulang instans DB Anda, konfirmasikan bahwa instans DB dalam status tersedia di. Bergantung pada ukuran instans DB Anda, diperlukan waktu hingga 20 menit agar instans DB tersedia untuk koneksi jaringan

Jika instans DB Anda dalam keadaan gagal, lihat Mengapa instans DB Amazon RDS saya dalam keadaan gagal?

Pastikan instans DB Anda mengizinkan koneksi

Pastikan lalu lintas dari sumber yang terhubung ke instans DB Anda tidak dibatasi oleh satu atau beberapa hal berikut

  • Grup keamanan Amazon Virtual Private Cloud (Amazon VPC) apa pun yang terkait dengan instans DB. Jika perlu, terkait dengan VPC yang mengizinkan lalu lintas yang terkait dengan sumber masuk dan keluar dari instans DB. Anda dapat menentukan alamat IP, rentang alamat IP, atau grup keamanan VPC lainnya. Untuk informasi umum tentang VPC dan instans DB, lihat Skenario untuk mengakses instans DB di VPC
  • Grup keamanan DB apa pun yang terkait dengan instans DB. Jika instans DB tidak ada di VPC, instans tersebut mungkin menggunakan grup keamanan DB untuk membatasi lalu lintas. Perbarui grup keamanan DB Anda untuk mengizinkan lalu lintas dari rentang alamat IP atau yang Anda gunakan untuk terhubung
  • Koneksi di luar VPC. Pastikan instans DB dapat diakses publik dan dikaitkan dengan subnet publik (misalnya, tabel rute memungkinkan akses dari gateway internet). Untuk informasi selengkapnya, lihat Skenario untuk mengakses instans DB di VPC
    Jika instans DB Anda berada dalam subnet pribadi, pastikan untuk menggunakan VPC peering atau AWS Site-to-Site VPN untuk terhubung ke instans Anda dengan aman. Dengan Site-to-Site VPN, Anda memungkinkan Anda menghubungkan VPC ke jaringan jarak jauh Anda. Anda dapat menggunakan peering VPC dengan membuat koneksi peering antara VPC sumber dan VPC instance Anda untuk mengakses instance dari luar VPC-nya. Anda juga dapat menggunakan instans Amazon EC2 sebagai host bastion (jump).
  • ACL jaringan. ACL jaringan bertindak sebagai firewall untuk sumber daya di subnet tertentu di VPC. Jika Anda menggunakan ACL di VPC, lalu ke dan dari instans DB
  • Jaringan atau firewall lokal. Tanyakan kepada administrator jaringan Anda apakah jaringan Anda mengizinkan lalu lintas ke dan dari port yang digunakan instans DB untuk komunikasi masuk dan keluar
    Catatan. Amazon RDS tidak menerima lalu lintas Internet Control Message Protocol (ICMP), termasuk ping

Memecahkan potensi masalah nama DNS atau titik akhir

Saat menghubungkan ke instans DB, Anda menggunakan nama DNS (titik akhir) yang disediakan oleh konsol Amazon RDS. Pastikan untuk menggunakan titik akhir yang benar. Berikan juga titik akhir dalam format yang benar ke klien yang Anda gunakan untuk terhubung ke instans DB. Untuk informasi selengkapnya tentang koneksi mesin DB dan cara menggunakan titik akhir di berbagai aplikasi klien, lihat Memulai dengan Amazon RDS

Misalnya, gunakan nslookup ke titik akhir instans DB dari instans Amazon EC2 dalam VPC

nslookup myexampledb.xxxx.us-east-1.rds.amazonaws.com 
Server: xx.xx.xx.xx 
Address: xx.xx.xx.xx#53

Lihat contoh jawaban non-otoritatif berikut

Name: myexampledb.xxxx.us-east-1.rds.amazonaws.com 
Address: 172.31.xx.x
_

Memecahkan masalah tingkat basis data

  • Pastikan Anda menggunakan nama pengguna dan kata sandi yang benar untuk mengakses instans dari klien DB Anda
  • Pastikan pengguna memiliki izin database untuk terhubung ke instans DB
  • Periksa pelambatan sumber daya apa pun di Amazon RDS, seperti pertengkaran CPU atau memori. Perselisihan ini mungkin menyebabkan masalah dengan membangun koneksi baru ke instans
  • Pastikan instance belum mencapai batas max_connections

Periksa tabel rute yang terkait dengan instans Anda

Saat Anda membuat penerapan Multi-AZ, Anda meluncurkan beberapa instans DB replika di Availability Zone yang berbeda untuk meningkatkan toleransi kesalahan aplikasi Anda. Pastikan bahwa subnet yang terkait dengan setiap instans DB dikaitkan dengan tabel rute yang sama atau serupa. Jika instans DB utama Anda gagal ke replika siaga yang dikaitkan dengan tabel rute berbeda, lalu lintas mungkin tidak dirutekan dengan benar. Meskipun lalu lintas tersebut sebelumnya dirutekan tanpa masalah, lalu lintas tersebut mungkin tidak lagi dirutekan dengan benar

Untuk informasi selengkapnya tentang mengonfigurasi tabel rute, lihat. Untuk informasi tambahan tentang penerapan Multi-AZ, lihat penerapan Multi-AZ untuk ketersediaan tinggi

Catatan. Jika Anda dapat terhubung ke instans DB Anda tetapi Anda mendapatkan kesalahan autentikasi, lihat Bagaimana cara mereset kata sandi pengguna utama untuk instans DB RDS saya?

Verifikasi konektivitas

Verifikasi koneksi Anda dengan menjalankan salah satu dari perintah ini

telnet  
nc -zv  

Jika perintah telnet atau nc berhasil, maka koneksi jaringan dibuat. Ini berarti bahwa masalah tersebut kemungkinan disebabkan oleh autentikasi pengguna ke database, seperti nama pengguna dan kata sandi

Bagaimana cara memperbaiki kesalahan koneksi MySQL?

Beberapa solusi permanen adalah. .
Tentukan apa yang salah dengan server DNS Anda dan perbaiki
Tentukan alamat IP daripada nama host di tabel hibah MySQL
Masukkan entri untuk nama mesin klien di /etc/hosts di Unix atau \windows\hosts di Windows
Mulai mysqld dengan variabel sistem skip_name_resolve diaktifkan

Mengapa saya tidak dapat terhubung ke server MySQL?

Berikut adalah beberapa alasan kesalahan Tidak dapat terhubung ke server MySQL lokal mungkin terjadi. mysqld tidak berjalan di host lokal . Periksa daftar proses sistem operasi Anda untuk memastikan proses mysqld ada. Anda menjalankan server MySQL di Windows dengan banyak koneksi TCP/IP.

Apa itu MySQL PyMySQL?

PyMySQL adalah antarmuka untuk menghubungkan ke server database MySQL dari Python . Ini mengimplementasikan Python Database API v2. 0 dan berisi pustaka klien MySQL Python murni. Tujuan dari PyMySQL adalah menjadi pengganti drop-in untuk MySQLdb.

Bagaimana cara terhubung ke server di MySQL?

Membuat Koneksi ke MySQL .
Di kotak Nama server, masukkan nama server MySQL. Di kotak Server port, masukkan nomor port menjadi 3306. Ini adalah port default
Di kotak Nama pengguna, masukkan akun MySQL yang memiliki izin yang diperlukan
Di kotak Kata Sandi, masukkan kata sandi untuk nama pengguna yang ditentukan