MySQL error: 2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 0"
Asked Answered
S

12

20

I'm having an issue connecting to my local MySQL database using Python's MySQLdb library. The script has been working well previously, but I will occasionally get the MySQL error in the title. There seems to be no explanation for when the error occurs, and the script is always run from the same machine with the same arguments.

The MySQL server is running as a service on Windows XP SP3 using port 3306 (locally hosted phpMyAdmin works), and the script is run from an Ubuntu 10.04 guest operating system in Oracle VM VirtualBox.

I am currently working around this issue by opening a command prompt and executing 'net stop MySQL' then 'net start MySQL'. This allows me to run the script a few times again before resulting in the error, which I've been fixing by restarting the MySQL service.

As I am still making changes to the script, there are occasions when the script raises an exception and doesn't exit gracefully, though I do catch the exception and close the cursor and connection.

The code to connect to the database:

def __init__(self):
  try:
    print "Connecting to the MySQL database..."
    self.conn = MySQLdb.connect( host = "192.168.56.1",
                                 user = "guestos",
                                 passwd = "guestpw",
                                 db = "testdb")
    self.cursor = self.conn.cursor(MySQLdb.cursors.DictCursor)
    print "MySQL Connection OK"
  except MySQLdb.Error, e:
    print "MySQLdb error %d: %s" % (e.args[0],e.args[1])
    raise

The full error generated when this happens is as follows:

MySQLdb error 2013: Lost connection to MySQL server at 'reading initial communication packet', system error: 0
Traceback (most recent call last):
  File "search.py", line 45, in <module>
    dataHandler = DataHandler()
  File "/home/guestos_user/workspace/Search/src/data_handler.py", line 25, in __init__
    db = "testdb")
  File "/usr/lib/pymodules/python2.6/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 170, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 0")
Sinfonia answered 26/8, 2010 at 18:14 Comment(3)
Did you manage to fix it? I'm getting this too :\ my host is 127.0.0.1 connecting with putty on connected to my serverArkansas
I fixed it at the time by upgrading MySQL. I suspect you're probably using the latest version, but do double check just in case. If you are using the latest, then unfortunately I don't know how to fix it.Sinfonia
This worked for me #32400331Gamez
R
21
sudo vi /etc/mysql/my.cnf

delete

bind-address = 127.0.0.1

then

sudo reboot now

That's it. Be aware that this will make your mysql server less secure as you are exposing it.

Reinaldo answered 14/6, 2011 at 0:38 Comment(2)
I have looked for hours to solve this problem, and nobody else mentions the need to REBOOT! Thank you!Trammell
@Pathros : you are exposing your MySQL server, so it is accessible to the outside network.Jaddo
P
4

I have seen this happen when child processes try to share the same mysql connection id (solution = create new connections for each child process). I'm not sure if this is also possible when sharing connection objects with multiple threads.

However, that's only one of the many possible causes. See VVS's answer in MySQL Error 2013 for a list of troubleshooting resources.

Polyandry answered 26/8, 2010 at 18:32 Comment(1)
Every script invocation should technically be creating a new connection object, but I'm not familiar enough with Python to say if it's aggregating the connections transparently. Moreover, I am closing connections to the MySQL server when the script exits. It's just reconnecting in a new script instance (after the previous one exited) that seems to be a problem.Sinfonia
F
2

Do you have in your MySQL server an acount called guestos@YOURIPADDRESS? You must have an account to access to your MySQL server from YOURIPADDRESS!

For example: Your IP address is 192.168.56.2; then you must create and account if not exist to access.

mysql> create user [email protected] identified by 'guestpw';
Ferrigno answered 14/7, 2012 at 12:56 Comment(1)
will 127.0.0.1 work fine? I'm connected via Putty, seems good from browser when accessing phpmyadminArkansas
P
2

The problem fixed for me just by restarting my mac. Though there might be a more specific fix for it.

Phrygian answered 18/4, 2017 at 0:57 Comment(0)
P
1

I received a similar error when attempting to connect to my MySQL server remotely through a user with the sufficient permissions.

After editing the /etc/mysql/my.cnf file to include

[mysqld]
bind-address=xx.xx.xxx.xxx

where xx.xx.xxx.xxx is my local IP address, I began experiencing the exact same error as you. From there, I found an answer regarding this issue (answered by Coffee Converter) which worked for me, and can be found here: Lost connection to MySQL server at 'reading initial communication packet', system error: 0 on a windows machine

All I did to fix the issue for myself was edit the /etc/hosts.allow to include

mysqld: ALL: allow

Works great now! I hope this helped :)

Palatable answered 1/11, 2017 at 16:42 Comment(0)
D
0

I run a windows server and from time to time the php-win.exe will load and stay in the processes list on the windows task manager.

If you know the host file is correct, then kill the php-win.exe process and restart iis iisreset

If you are running windows then your problem should be solved.

Deictic answered 28/10, 2011 at 5:4 Comment(0)
M
0

Could you change the bind-address=localhost and restart MySQL server? Seems like this issue is related to yours: http://forums.mysql.com/read.php?152,355740,355742#msg-355742

Also this-

If MySQL port is wrong result is MySQL client error 2013 "Lost connection ...". Note that this error also occurs if port forwarding is disabled in SSH configuration (the configuration parameter 'AllowTcpForwarding' is set to 'no' in the 'sshd_config' file). It (here) simply tells that there is no connection from SSH to MySQL for some reason. But the mySQL client API 'thinks' there was one connection and that is why is says 'Lost connection ...' and not 'Can’t connect...'. There was one successful connection - but not to the MySQL server - to the SSH daemon only! But the MySQL client API is not designed to 'see' the difference!

Refer this.

Microdont answered 29/3, 2012 at 4:34 Comment(0)
A
0

I've had the exact same mysql error (ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0=) and have resolved it by adding a newline to /etc/hosts.deny.

Arella answered 9/5, 2014 at 11:18 Comment(0)
D
0

Possibility: your database is corrupted.

I encountered this situation when I was running an UPDATE statement on a specific row of a specific table. (Specifically, I was editing an item in a Django Admin site.) Most of the time the database worked just fine.

I finally resolved the problem by running:

OPTIMIZE TABLE `your_table`

After that everything was OK, no connection lost.

Conclusion:

The problem "Lost connection to MySQL server at 'reading initial communication packet'", sometimes "Can't connect to MySQL server on '127.0.0.1'", could possibly be resolved by running a full database optimization if the database is corrupted. For more info, read this.

Dearing answered 10/12, 2015 at 3:15 Comment(1)
This was my issue; I imported an export from production over my existing database, and from that point on, if anything had that database open, my server was unconnectable. Dropping the database and redoing the import made everything work. Another common denominator is that I'm on a Django project, too.Oppen
W
0

Just to further extend the list of possible causes: it could also be as banal as wrong connection data/credentials. I encountered this error in conjunction with sqlalchemy:

sqlalchemy.exc.OperationalError: (mysql.connector.errors.OperationalError) 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

In my code I connect to several different databases and once in a while it happens that I don't get the mapping between the db connections and their credentials (e.g. ip address of server, db-name, password etc.) right, which then also results in the 2013-error (in this case wrapped into an sqlalchemy operational error).

Weylin answered 10/1, 2020 at 9:34 Comment(0)
S
0

setting.py file set like:

'ENGINE': 'django.db.backends.mysql', 'NAME': 'test2', 'USER': 'root', 'PASSWORD': '', 'HOST': 'localhost', 'PORT': '3308',

Strophanthin answered 9/11, 2020 at 21:57 Comment(1)
Welcome to SO. I don't believe the answer is related to the setting.py setup.Differentiate
L
-1

This bug report might be of interest to you. Don't know if this will help you, but some were able to solve it by using the name of the server rather than the ip address in the connection properties.

Loathe answered 26/8, 2010 at 18:17 Comment(1)
I've seen that; since I'm running my development environment in a guest OS, I'm not sure how to name the server; localhost is loopback, and I don't see any options in VirtualBox to name the host. Is there an Apache configuration option I can use? My dev server is not accessible from the internet (nor do I want it to be).Sinfonia

© 2022 - 2024 — McMap. All rights reserved.