There are three likely causes for this error message.
Usually it indicates network connectivity trouble and you should check the condition of your network if this error occurs frequently. If the error message includes “during query,” this is probably the case you are experiencing.
Sometimes the “during query” form happens when
millions of rows are being sent as part of one or more
queries. If you know that this is happening, you should try
increasing net_read_timeout
from its default of 30 seconds to 60 seconds or longer,
sufficient for the data transfer to complete.
More rarely, it can happen when the client is attempting the
initial connection to the server. In this case, if your
connect_timeout value is set
to only a few seconds, you may be able to resolve the problem
by increasing it to ten seconds, perhaps more if you have a
very long distance or slow connection. You can determine
whether you are experiencing this more uncommon cause by using
SHOW GLOBAL STATUS LIKE 'Aborted_connects'.
It will increase by one for each initial connection attempt
that the server aborts. You may see “reading
authorization packet” as part of the error message; if
so, that also suggests that this is the solution that you
need.
If the cause is none of those just described, you may be
experiencing a problem with
BLOB values that are larger
than max_allowed_packet,
which can cause this error with some clients. Sometime you may
see an ER_NET_PACKET_TOO_LARGE
error, and that confirms that you need to increase
max_allowed_packet.

User Comments
This error can be caused by having tcp wrappers set up on your database server. If you have entries in /etc/hosts.deny and /etc/hosts.allow adding the following to hosts.allow may solve the problem:
mysqld: 127.0.0.1
Note:
mysql -h localhost -u user -p
may work, whereas
mysql -h 127.0.0.1 -u user -p
may not - this is because 'localhost' is swapped to using a file socket, but 127.0.0.1 forces use of the TCP socket.
If you're on a remote connection and loose connections frequently check if skip-name-resolve is in my.cnf.
In my case it was the name lookup causing the infamous lost-connection issue.
If you don't want to use ip-addresses and don't want to turn it off check your dns... make sure your nameserver(s) are in /etc/resolv.conf
Stephen Adkins made a suggestion here which resolved the issue for me:
http://forums.mysql.com/read.php?11,6916,184947
Add your own comment.