মাইএসকিউএল ত্রুটি: (2003, "'2001: db8: 81: 2c :: 2' (-9)" এ মাইএসকিউএল সার্ভারের সাথে সংযুক্ত হতে পারে না)


15

আমি আইপিভি 6 এর মাধ্যমে একটি রিমোট মাইএসকিউএল 5.5.25a সার্ভার নিরীক্ষণের জন্য সেন্টোস 6.3 এ জেনোস 4.2.0 সেট করার চেষ্টা করছি। ফায়ারওয়ালটি মনিটরিং সার্ভারের জন্য উন্মুক্ত এবং আমি কমান্ড লাইন থেকে সূক্ষ্ম সংযোগ করতে পারি:

[root@zenoss ~]# mysql -u zenoss -p -h 2001:db8:81:2c::2
...
mysql> SELECT USER(),CURRENT_USER();
+-----------------------------------------+-----------------------------------------+
| USER()                                  | CURRENT_USER()                          |
+-----------------------------------------+-----------------------------------------+
| zenoss@2001:db8:16:bf:5054:ff:fec0:f7a5 | zenoss@2001:db8:16:bf:5054:ff:fec0:f7a5 |
+-----------------------------------------+-----------------------------------------+
1 row in set (0.09 sec)

জেনোস অবশ্য একটি ইভেন্ট তৈরি করে "প্লাগইন থেকে কোনও পারফরম্যান্স ডেটা নয়" যার বিবরণ অভিযোগ করে যে এটি সার্ভারের সাথে সংযোগ করতে পারে না:

MySQL Error: (2003, "Can't connect to MySQL server on '2001:db8:81:2c::2' (-9)")

আমি যতদূর জানি, -9 এমনকি একটি বৈধ ত্রুটিযুক্ত নয়। এবং অবশ্যই এটি Google এর পক্ষে নেতিবাচক সংখ্যা অসম্ভব ।

এখানে চিত্র বর্ণনা লিখুন

আমি zMySqlUsername এবং zMySqlPassword - একাধিক বার পরীক্ষা করেছি - এবং তাদের সঠিক মান রয়েছে।

আমি বন্ধনী সহ আইপিভি 6 ঠিকানা প্রবেশ করার চেষ্টা করেছি, তবে মাইএসকিউএল জেনোসের মধ্যে বা কমান্ড লাইনে, এটি মোটেই পছন্দ করে না।

এই সমস্যার কারণ কী?


অন্য সব ব্যর্থ হলে আপনি কি আইপিভি 4-এ ফিরে যেতে পারবেন না?
জন গার্ডেনিয়ার্স 5'12

@ জনগার্ডিনিয়ার্স তবে মনিটরিং করা অনেকগুলি মেশিনের গ্লোবাল আইপিভি 4 ঠিকানা নেই, তাই একটি জেনোস প্রক্সি প্রয়োজন। অন্যান্য জিনিসের মধ্যে আমি এ থেকে সরে যাওয়ার চেষ্টা করছি।
মাইকেল হ্যাম্পটন

ঠিক আছে, আমি কেবল ভেবেছিলাম এটি একটি বিকল্প হতে পারে, বিশেষত আইপিভি 6 অনেক পণ্যগুলিতে এতই অসম্পূর্ণ বা অপূর্ণ।
জন গার্ডেনিয়ার্স 6'12

উত্তর:


11

অবশেষে আমি হাল ছেড়ে দিয়ে এটিকে নিজেই ডিবাগ করতে চলেছি।

@ সেলিবানোভ পাভেলের উত্তরের ভিত্তিতে আমি zencommandডিবাগিংটি চালু করলাম এবং অপেক্ষা করছিলাম, এবং নিশ্চিতভাবেই, জেনপ্যাক ব্যর্থ হয়েছিল।

2012-08-16 18:16:14,092 INFO zen.zencommand: Datasource MySQL/mysql command: /opt/zenoss/ZenPacks/ZenPacks.zenoss.MySqlMonitor-2.2.0-py2.7.egg/ZenPacks/zenoss/MySqlMonitor/libexec/check_mysql_stats.py -H 2001:db8:81:2c::2 -p 3306 -u zenoss -w 'password' -g
2012-08-16 18:16:14,100 DEBUG zen.zencommand: Running /opt/zenoss/ZenPacks/ZenPacks.zenoss.MySqlMonitor-2.2.0-py2.7.egg/ZenPacks/zenoss/MySqlMonitor/libexec/check_mysql_stats.py
2012-08-16 18:16:14,544 DEBUG zen.zencommand: Datasource: mysql Received exit code: 1 Output: 'MySQL Error: (2003, "Can\'t connect to MySQL server on \'2001:db8:81:2c::2\' (-9)")\n'
2012-08-16 18:16:14,545 DEBUG zen.zencommand: Process MySQL/mysql stopped (1), 0.43 seconds elapsed 

তাই আমি ZenPack মধ্যে খাত এবং খুঁজে পাওয়া যায় নি এটা (একজন দৃশ্যত পুরাতন সংস্করণ) আমদানি করতে হচ্ছে pymysqlথেকে /opt/zenoss/lib/python

পাইথন কমান্ড লাইন থেকে পরীক্ষার সময় আমি আবিষ্কার করেছি যে ব্যতিক্রমটি কোথা থেকে ছুঁড়েছে:

>>> sys.path.insert(0, "/opt/zenoss/lib/python");
>>> import pymysql
>>> pymysql.install_as_MySQLdb()
>>> import MySQLdb
>>> self.conn = MySQLdb.connect(host="2001:db8:81:2c::2", port=3306, db='', user='zenoss', passwd='password')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/zenoss/lib/python/pymysql/__init__.py", line 93, in Connect
    return Connection(*args, **kwargs)
  File "/opt/zenoss/lib/python/pymysql/connections.py", line 504, in __init__
    self._connect()
  File "/opt/zenoss/lib/python/pymysql/connections.py", line 673, in _connect
    raise OperationalError(2003, "Can't connect to MySQL server on %r (%s)" % (self.host, e.args[0]))
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '2001:db8:81:2c::2' (-9)")

এবং connections.pyসেই সাধারণ আশেপাশে পরিদর্শন করার সময় আমি আমার ভয়াবহতার সন্ধান পেয়েছিলাম যে এটি একটি AF_INETসকেট খোলার চেষ্টা করছে এবং সকেট খোলার জন্য কোথাও কোনও কোড নেই AF_INET6। বুম, তাত্ক্ষণিক ব্যর্থ।

বর্তমান সংস্করণেও pymysqlএই ঘাটতি রয়েছে বলে মনে হয়; কোনও আইপিভি 6 সমর্থন করে না।

সুতরাং "উত্তর" আমি ঠিক করতে যাচ্ছি pymysql। আমি কিভাবে আমার বিকাল কাটাতে চেয়েছিলাম তা নয়।

এই বিড়াল হ্যাকারি জিনিসগুলি কাজ করে (যদিও আপনার পাইথন ২.6 প্রয়োজন)। 660 লাইনটি খুলুন /opt/zenoss/lib/python/pymysql/connections.pyএবং অনুসন্ধান করুন AF_INETThen তারপরে নিম্নলিখিত পরিবর্তনটি করুন:

                 if DEBUG: print 'connected using unix_socket'
             else:
-                sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-                t = sock.gettimeout()
-                sock.settimeout(self.connect_timeout)
-                sock.connect((self.host, self.port))
-                sock.settimeout(t)
+                sock = socket.create_connection((self.host, self.port), self.connect_timeout)
                 self.host_info = "socket %s:%d" % (self.host, self.port)
                 if DEBUG: print 'connected using socket'

এটি এর পরে আপস্ট্রিম পাইমিস্কুলে স্থির করা হয়েছে এবং ভবিষ্যতে প্রকাশিত হওয়া উচিত।


5

চেক করুন, কোনও সংযোগের চেষ্টা আছে:

tshark -i br200 -f "host 2001:db8:81:2c::2"

tshark প্যাকেট ক্যাপচার প্রোগ্রাম Wireshark এর কনসোল সংস্করণ।

যদি জেনোস সার্ভিস ব্যবহারকারী রুট না হন - তার শেল থেকে মাইএসকিএল সংযোগ করার চেষ্টা করুন:

su zenoss
mysql ...

জেনোস লগগুলি (সেটিংস> ডেমোনস) সম্পর্কে কী? লগ ভার্বোসিটি বাড়াতে চেষ্টা করুন (লগসিভারিটি সেট করুন = 30) এবং কী হয় তা দেখুন।

এই দস্তাবেজটি কার্যকর হতে পারে: সমস্যা নিবারণ_জেনোস


আপনি অন্যের চেয়ে সমস্যার কাছাকাছি এসেছিলেন বলে উত্সাহ পাবেন। ধন্যবাদ। :)
মাইকেল হ্যাম্পটন

3

এটি বন্ধনীতে রাখার চেষ্টা করুন [2001: 470: ...] বা আইপিভি 6: []। একটি দুর্দান্ত অনেক পার্সার একটি পাঠ্য প্রবেশ এবং একটি ভি 6 ঠিকানার মধ্যে পার্থক্য করতে পারে না।


1
ওখানে এসেছি। মাইএসকিউএল, কমপক্ষে, বন্ধনী ছাড়াই আইপি ঠিকানা চায়।
মাইকেল হ্যাম্পটন

2
সেই ত্রুটি কোডটি লাইব্রেরিগুলি থেকে হতে পারে যা মাইএসকিএল না করে জেনোস ব্যবহার করছে। এটি বেশিরভাগ পাইথনে লেখা হয়েছে যদি আমি সঠিকভাবে মনে রাখি তবে এটি কোনও ইঙ্গিত সন্ধানের জন্য জায়গা হতে পারে।
rnxrx

1
যদি আমাকে সোর্স কোডটি খনন করতে হয়, আমি নিজের প্রশ্নের উত্তর দিয়ে শেষ করব। আবার। :)
মাইকেল হ্যাম্পটন

3
ওপেন সোর্সের সৌন্দর্য কি তাই না? আমরা সবাই আমাদের নিজস্ব বাগ <কেডিং> ঠিক করতে পারি। আরে - যদিও অন্য চিন্তা। আপনি যদি কোনও স্ট্যান্ডার্ড হোস্টনেম সেট আপ করেন যা কেবলমাত্র এএএএর সাথে সমাধান হয়ে যায় এবং তারপরে কাঁচা আইপির পরিবর্তে সেই হোস্টনামটি ব্যবহার করে?
rnxrx
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.