Mysql error.log menunjukkan
[Warning] Aborted connection 320935 to db: '...' user: '...' host: '...' (Got an error reading communication packets)
Sementara pihak klien mendapatkan:
Lost connection to MySQL server at 'reading initial communication packet', system error: 111
Lost connection to MySQL server at 'reading authorization packet', system error: 0
and after a while: Host '...' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
Saya membaca manual mysql tentang ini, dan banyak utas lainnya. Jadi saya mengubah beberapa nilai di my.cnf
max_allowed_packet = 512M
connect_timeout = 60
net_read_timeout = 120
innodb_buffer_pool_size = 5G
Melihat log permintaan koneksi yang terputus:
22400 Connect user@host on dbname
22400 Query SELECT @@sql_mode
22400 Query SET SESSION sql_mode=''
22400 Query SET NAMES utf8
22400 Init DB dbname
22400 Init DB dbname
Memeriksa status tabel. bind-address adalah IP server tetapi saya harus dapat terhubung dari luar.
Aborted_connects is 196
Jawaban:
Didasarkan pada data yang terbatas, saya ingin tahu apakah Anda memiliki firewall antara klien dan server MySQL (mungkin ada di host secara langsung) yang mengizinkan 3306 ke server MySQL tetapi memblokir paket respons terhadap permintaan SYN awal kembali.
Anda mungkin ingin melakukan dump paket di kedua sisi untuk mengetahui apa yang terjadi di sisi TCP dan / atau memeriksa firewall apa pun yang ada di antara kedua sisi.
sumber
Saya menduga ini bukan masalah mysql.
Pastikan lapisan transport OK. Bisakah Anda menggunakan koneksi tcp
telnet [db_server] 3306
?Apakah klien dan server Anda sepakat tentang apakah koneksi harus dienkripsi SSL?
Saya tidak bisa memikirkan banyak situasi di mana saya ingin menjalankan koneksi mysql melalui internet publik, yang saya curigai adalah apa yang Anda maksud dengan 'dapat terhubung dari luar'. Jika tidak dienkripsi, ini adalah risiko keamanan yang sangat besar, dan overhead pengaturan SSL untuk setiap koneksi terlalu tinggi untuk sebagian besar penggunaan. Anda mungkin ingin melihat menggunakan semacam terowongan terenkripsi persisten.
sumber
Koneksi yang dibatalkan dianggap sebagai kesalahan koneksi di MySQL yang mungkin tidak masuk log kesalahan MySQL. Lihat koneksi TCP yang terputus yang tidak dicatat sebagai kesalahan tetapi mengakibatkan host diblokir .
sumber