Вопрос:

OperationalError: (OperationalError) (2003, «Не удается подключиться к серверу MySQL на« 192.168.129.139 »(111)») Нет Нет

python mysql sql sqlalchemy

33749 просмотра

1 ответ

5757 Репутация автора

Я пытаюсь создать удаленную базу данных, используя mysql на машине с Ubuntu, работающей 12.04.

У него есть пользователь root с включенным удаленным входом и без пароля. Я запустил сервер.

вывод

sudo netstat -tap | grep mysql

шоу

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

Я создал базу данных под названием nwtopology, используя (как уже упоминалось, у пользователя root еще нет пароля).

 create database nwtopology
 grant all privileges on *.* to root@192.168.129.221
 FLUSH PRIVILEGES;

С клиентского компьютера, на котором также работает Ubuntu 12.04, я использую скрипт python для подключения к удаленной базе данных mysql с помощью 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

Вызов create_engine () завершается ошибкой со следующей ошибкой.

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 <module>
    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

Я не могу понять, почему это происходит? Любая помощь очень ценится?

Автор: liv2hak Источник Размещён: 09.05.2013 10:26

Ответы (1)


13 плюса

4346 Репутация автора

Решение

Похоже, mysql настроен на прослушивание только на локальном хосте.

Вы можете проверить это, запустив telnet 192.168.129.139 3306с вашего клиентского компьютера.

Наиболее вероятная причина - mysqld настроен для этого.

Пожалуйста, попробуйте выполнить шаг настройки, описанный здесь :

Отредактируйте /etc/mysql/my.cnfфайл, чтобы настроить MySQL для прослушивания соединений от сетевых узлов, измените директиву bind-address на IP-адрес сервера. Например, замените 192.168.0.5 на соответствующий адрес. Если такой записи нет - раскомментируйте ее или создайте новую строку.

bind-address            = 192.168.0.5

Затем перезапустите mysqld

sudo service mysql restart

Затем проверьте с помощью telnet или запустите приложение еще раз. Также netstat будет иметь вторую запись для mysqld.

Автор: vvladymyrov Размещён: 09.05.2013 11:24
Вопросы из категории :
32x32