liv2hak liv2hak - 1 year ago 68
SQL Question

OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on '' (111)") None None

I am trying to create a remote database using mysql on an Ubuntu machine running 12.04.

It has a root user with remote login enabled and no password.I have started the server.

output of

sudo netstat -tap | grep mysql


tcp 0 0 localhost:mysql *:* LISTEN 13246/mysqld

I have created a database called nwtopology using (as mentioned root doesn't have a password yet.)

create database nwtopology
grant all privileges on *.* to root@

From the client machine that also runs Ubuntu 12.04 I use a python script to connect to the remote mysql database using sqlalchemy.

from pox.core import core
import pox.openflow.libopenflow_01 as of
import re
import datetime
import time
from sqlalchemy import create_engine, ForeignKey
from sqlalchemy import Column, Date, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.sql.expression import exists

log = core.getLogger()
engine = create_engine('mysql://root@', echo=False)
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()

class SourcetoPort(Base):
__tablename__ = 'source_to_port'
id = Column(Integer, primary_key=True)
port_no = Column(Integer)
src_address = Column(String,index=True)

def __init__(self, src_address,port_no):
self.src_address = src_address
self.port_no = port_no

The create_engine() call is failing with the following error.

POX 0.1.0 (betta) / Copyright 2011-2013 James McCauley, et al.
Traceback (most recent call last):
File "/home/karthik/ms_thesis/pox/pox/", line 89, in do_import2
__import__(name, globals(), locals())
File "/home/karthik/ms_thesis/pox/custom/", line 39, in <module>
File "/usr/lib/python2.7/dist-packages/sqlalchemy/", line 2515, in create_all
File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/", line 2230, in _run_visitor
conn = self.contextual_connect(close_with_result=False)
File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/", line 2340, in contextual_connect
File "/usr/lib/python2.7/dist-packages/sqlalchemy/", line 210, in connect
return _ConnectionFairy(self).checkout()
File "/usr/lib/python2.7/dist-packages/sqlalchemy/", line 371, in __init__
rec = self._connection_record = pool._do_get()
File "/usr/lib/python2.7/dist-packages/sqlalchemy/", line 697, in _do_get
con = self._create_connection()
File "/usr/lib/python2.7/dist-packages/sqlalchemy/", line 174, in _create_connection
return _ConnectionRecord(self)
File "/usr/lib/python2.7/dist-packages/sqlalchemy/", line 256, in __init__
self.connection = self.__connect()
File "/usr/lib/python2.7/dist-packages/sqlalchemy/", line 316, in __connect
connection = self.__pool._creator()
File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/", line 80, in connect
return dialect.connect(*cargs, **cparams)
File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/", line 280, in connect
return self.dbapi.connect(*cargs, **cparams)
File "/usr/lib/python2.7/dist-packages/MySQLdb/", line 81, in Connect
return Connection(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/MySQLdb/", line 187, in __init__
super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on '' (111)") None None

I cannot figure out why this is happening?Any help is greatly appreciated?

Answer Source

Looks like mysql is configured to listen only on localhost.

You can test this by running telnet 3306 from your client machine.

Most probable reason - mysqld is configured to do so.

Please try to follow Configuration step described here:

Edit the /etc/mysql/my.cnf file to configure MySQL to listen for connections from network hosts, change the bind-address directive to the server's IP address. For example Replace with the appropriate address. If there are no such entry - uncomment it or create new line.

bind-address            =

Then restart mysqld

sudo service mysql restart

Then test with telnet or by running your application once again. Also netstat would have second entry for mysqld.