2013-05-09 5 views
8

मैं 12.04 चल रहे उबंटू मशीन पर mysql का उपयोग कर रिमोट डेटाबेस बनाने की कोशिश कर रहा हूं।ऑपरेशनल एरर: (ऑपरेशनल एरर) (2003, "1 9 2.168.129.139 '(111)" पर MySQL सर्वर से कनेक्ट नहीं हो सकता है) कोई भी नहीं

इसमें रिमोट लॉग इन सक्षम है और कोई पासवर्ड नहीं है। मैंने सर्वर शुरू कर दिया है।

sudo netstat -tap | grep mysql 

के उत्पादन

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

मैं एक डेटाबेस का उपयोग nwtopology बुलाया बनाया है दिखाता है (के रूप में उल्लेख जड़ अभी तक एक पासवर्ड नहीं है।)

create database nwtopology 
grant all privileges on *.* to [email protected] 
FLUSH PRIVILEGES; 

से क्लाइंट मशीन जो उबंटू 12.04 भी चलाती है मैं स्क्लल का उपयोग कर दूरस्थ mysql डेटाबेस से कनेक्ट करने के लिए एक पायथन स्क्रिप्ट का उपयोग करता हूं 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 

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 

मुझे पता नहीं चल रहा है कि यह क्यों हो रहा है? किसी भी मदद की बहुत सराहना की जाती है?

+3

त्रुटि आपको बता रही है कि मेजबान 192.168.129.139 पर 'mysql' पोर्ट पर कोई MySQL सर्वर नहीं सुन रहा है। वास्तव में, उस बंदरगाह पर सुनने पर शायद कुछ भी नहीं है। (आप इसे सत्यापित कर सकते हैं, उदाहरण के लिए, पायथन में 'nc 192.168.129.139 3306', या Python में 'ocket.create_connection'।) – abarnert

+0

यदि आप पूछ रहे हैं _why_ कोई सर्वर वहां नहीं सुन रहा है ... यह कोई पायथन प्रश्न नहीं है, या एक प्रोग्रामिंग सवाल; आपने कुछ गलत कॉन्फ़िगर किया है, और शायद आप इसके साथ मदद के लिए http://serverfault.com पर जाना चाहते हैं। – abarnert

+2

इस बीच, तीन स्पष्ट संभावनाएं: (1) 1 9 2.168.129.139 मशीन MySQL चलाने का पता नहीं है। (2) MySQL उसी पोर्ट पर नहीं चल रहा है जिसे आप कनेक्ट करने का प्रयास कर रहे हैं। मेरा मानना ​​है कि डिफ़ॉल्ट पोर्ट 3306 है (और मेरी '/ etc/services' सहमत है ...), लेकिन आप इसे किसी भी पोर्ट पर चलाने के लिए कॉन्फ़िगर कर सकते हैं, और आप किसी भी पोर्ट को कनेक्ट कॉल पर पास कर सकते हैं। (3) MySQL सेवा गलत इंटरफ़ेस पर सुन रही है - उदाहरण के लिए, यह स्थानीयहोस्ट पर सुन रहा है और आप eth0, या इसके विपरीत से कनेक्ट करने का प्रयास कर रहे हैं। – abarnert

उत्तर

12

ऐसा लगता है कि mysql को केवल स्थानीयहोस्ट पर सुनने के लिए कॉन्फ़िगर किया गया है।

आप अपनी क्लाइंट मशीन से telnet 192.168.129.139 3306 चलाकर इसका परीक्षण कर सकते हैं।

सबसे संभावित कारण - mysqld ऐसा करने के लिए कॉन्फ़िगर किया गया है।

Configuration step described here पालन करने के लिए प्रयास करें:

संपादित /etc/mysql/my.cnf फ़ाइल नेटवर्क मेजबान से कनेक्शन के लिए सुनने के लिए MySQL कॉन्फ़िगर करने के लिए, सर्वर का IP पता करने के लिए बाँध-पते के निर्देश बदल जाते हैं। उदाहरण के लिए उचित पते के साथ 192.168.0.5 बदलें। अगर ऐसी कोई प्रविष्टि नहीं है - इसे असम्बद्ध करें या नई लाइन बनाएं।

bind-address   = 192.168.0.5 

फिर mysqld

sudo service mysql restart 

फिर टेलनेट के साथ या अपने आवेदन एक बार फिर से चलाकर परीक्षण को पुनरारंभ करें। इसके अलावा netstat mysqld के लिए दूसरी प्रविष्टि होगी।

+0

+1 एक स्पष्ट रूपरेखा के लिए धन्यवाद।अगर कोई ऐसा करता है और अभी भी कनेक्ट नहीं हो सकता है (और उबंटू चला रहा है) तो अपनी फ़ायरवॉल सेटिंग्स जांचें और 3306 को बंदरगाह के रूप में अनुमति दें। –

+0

मुझे पर्याप्त विशेषाधिकार वाले नए उपयोगकर्ता को भी बनाना था जो बाहर से कनेक्ट हो सकता था (देखें [यहां] (http://stackoverflow.com/questions/1559955/host-xxx-xx-xxx-xxx-is-not- अनुमति-कनेक्ट करने के लिए इस-mysql-सर्वर के लिए))। – MBR

+0

मैंने जवाब में जो कुछ दिया है उसका पालन किया लेकिन अभी भी इसे काम नहीं कर सका। मुझे तब पता चला कि "बाइंड-एड्रेस" पैरामीटर "/etc/mysql/mysql.conf.d/mysqld.cnf" फ़ाइल में है। वहां पर टिप्पणी की और यह काम किया! – Yahya

संबंधित मुद्दे