SELECT Query is slow when run remotely in MySQL
LIMIT will work for the first 5000, but will get slower and slower as you move on (with OFFSET) to subsequent chunks.  So that's not a good way to process a large table in chunks.

Does the table have a PRIMARY KEY?  (If not, why not?)  Use that for very efficient chunking.  It will avoid the timeouts you are getting.

A discussion of chunking.  (That is aimed at DELETE, but it can easily be adapted to SELECT.)  The trick is to "remember where you left off".