Sto provando a creare un database remoto utilizzando mysql su una macchina Ubuntu che esegue 12.04.OperationalError: (OperationalError) (2003, "Impossibile connettersi al server MySQL su '192.168.129.139' (111)") Nessuno Nessuno
Ha un utente root con accesso remoto abilitato e nessuna password. Ho avviato il server.
uscita del
sudo netstat -tap | grep mysql
mostra
tcp 0 0 localhost:mysql *:* LISTEN 13246/mysqld
ho creato un database chiamato nwtopology utilizzando (come detto radice non ha ancora una password.)
create database nwtopology
grant all privileges on *.* to [email protected]
FLUSH PRIVILEGES;
Da la macchina client che esegue anche Ubuntu 12.04 Io uso uno script python per connettermi al database mysql remoto usando sqlal Chemy.
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://[email protected]/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
La chiamata a create_engine() ha esito negativo con il seguente errore.
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
Non riesco a capire perché questo sta accadendo? Qualsiasi aiuto è molto apprezzato?
L'errore sta dicendo che non c'è nessun server MySQL in ascolto sulla porta 'mysql' sull'host 192.168.129.139. In effetti, probabilmente non c'è nulla che ascolti su quella porta. (Puoi verificarlo con, ad esempio, 'nc 192.168.129.139 3306' nella shell, o'socket.create_connection' in Python.) – abarnert
Se stai chiedendo _why_ nessun server sta ascoltando lì ... questa non è una domanda Python, o una domanda di programmazione; hai configurato qualcosa di sbagliato e probabilmente vorrai andare su http://serverfault.com per un aiuto. – abarnert
Nel frattempo, tre ovvie possibilità: (1) 192.168.129.139 non è l'indirizzo della macchina che esegue MySQL. (2) MySQL non è in esecuzione sulla stessa porta a cui stai tentando di connettersi. Credo che la porta predefinita sia 3306 (e il mio '/ etc/services' è d'accordo ...), ma è possibile configurarla per l'esecuzione su qualsiasi porta e si può passare qualsiasi porta alla chiamata di connessione. (3) Il servizio MySQL sta ascoltando l'interfaccia sbagliata, ad esempio, sta ascoltando su localhost e stai cercando di connettersi su eth0 o viceversa. – abarnert