Aborted connection (Got an error reading communication packets)
The mysql error.log shows
[Warning] Aborted connection 320935 to db: '...' user: '...' host: '...' (Got an error reading communication packets)
While the client side get's:
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'
I read mysql manual about this, and a lot of other threads. So I changed some values in my.cnf
max_allowed_packet = 512M
connect_timeout = 60
net_read_timeout = 120
innodb_buffer_pool_size = 5G
Looked at query log of a broken connection:
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
Checked table status. bind-address is the server IP but I need to be able to connect from outside.
Aborted_connects is 196
Based off of the limited data I wonder if you have a firewall between the client and the MySQL server (it may be on the hosts directly) which permits 3306 to the MySQL server but is blocking response packets to the initial SYN request back.
You may want to perform a packet dump on both sides to work out what is happening on the TCP side and/or check any firewalls that exists between both sides.
I suspect this is not a mysql issue as such.
Verify that the transport layer is OK. Can you get a tcp connection using telnet [db_server] 3306
?
Are your client and server in agreement about whether the connection should be SSL encrypted?
I can't think of many situations where I'd want to run a mysql connection over the public internet, which I suspect is what you mean by 'able to connect from outside'. If unencrypted, this is a huge security risk, and the overhead of setting up SSL for each connection is too high for most uses. You might want to look at using a persistent encrypted tunnel of some sort.
Aborted connection is considered a connection error in MySQL which may not logged in MySQL error log. See dropped TCP connections not logged as errors but result in blocked host.