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

匿名 (未验证) 提交于 2019-12-03 01:08:02

问题:

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

shows

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@192.168.129.221  FLUSH PRIVILEGES;

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@192.168.129.139/nwtopology', 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/boot.py", line 89, in do_import2     __import__(name, globals(), locals())   File "/home/karthik/ms_thesis/pox/custom/tutorial.py", line 39, in      Base.metadata.create_all(engine)   File "/usr/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2515, in create_all     tables=tables)   File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2230, in _run_visitor     conn = self.contextual_connect(close_with_result=False)   File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2340, in contextual_connect     self.pool.connect(),   File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 210, in connect     return _ConnectionFairy(self).checkout()   File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 371, in __init__     rec = self._connection_record = pool._do_get()   File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 697, in _do_get     con = self._create_connection()   File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 174, in _create_connection     return _ConnectionRecord(self)   File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 256, in __init__     self.connection = self.__connect()   File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 316, in __connect     connection = self.__pool._creator()   File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 80, in connect     return dialect.connect(*cargs, **cparams)   File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 280, in connect     return self.dbapi.connect(*cargs, **cparams)   File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect     return Connection(*args, **kwargs)   File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__     super(Connection, self).__init__(*args, **kwargs2) OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on '192.168.129.139' (111)") None None

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

回答1:

Looks like mysql is configured to listen only on localhost.

You can test this by running telnet 192.168.129.139 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 192.168.0.5 with the appropriate address. If there are no such entry - uncomment it or create new line.

bind-address            = 192.168.0.5

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.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!