it-swarm.asia

محاولة استخدام MySQL Workbench مع TCP / IP عبر SSH - فشل الاتصال

لا يمكنني الاتصال باستخدام TCP/IP عبر اتصال SSH في MySQL Workbench من جهاز كمبيوتر. ماذا يحدث هنا؟

لقد أنشأت قاعدة بيانات MySQL 5.1 على خادم Ubuntu mysql.myhost.com. يمكنني الوصول إليها محليا. يقدم MySQL Workbench (PC) إجراء اتصال عبر TCP عبر ssh. يتم تشغيله على المنفذ 3306 على الخادم البعيد حيث يعمل mysql بسطر الأوامر بشكل جيد.

استخدمت تفاصيل الجلسة التالية:

  • طريقة الاتصال: TCP/IP عبر SSH.
  • اسم مضيف SSH: mysql.myhost.com: 3306
  • اسم مستخدم SSH: تسجيل دخول لينكس الخاص بي
  • ملف مفتاح SSH العمومي: ملف المفتاح العمومي المحلي
  • اسم مضيف MySQL: 127.0.0.1 MySQL
  • منفذ الخادم: 3306
  • اسم المستخدم: الجذر

تلقيت رسالة خطأ عند محاولة الاتصال: "فشل الاتصال بـ MySQL على 127.0.0.1:3306 من خلال نفق SSH على mysql.myhost.com مع جذر المستخدم"

"لا يمكن الاتصال بخادم MySQL على '127.0.0.1' (10061)"

كاختبار آخر - قمت بإعداد نفق SSH بمنفذ 3306 باستخدام PuTTY ويمكنني توصيل OK باستخدام MySQL Workbench من خلال هذا النفق الذي يعيد توجيه الاتصالات إلى بلدي 3306 المحلي إلى الخادم البعيد كما هو موضح أعلاه. ولكن لا يمكنني تشغيل "TCP/IP عبر SSH" في Workbench.

سؤال ثانوي: عندما يسأل Workbench عن "Path to SSH public key file" ألا يحتاج حقًا إلى ملف المفتاح الخاص بي؟

43
Dizzley

لقد عثرت على هذا السؤال عندما واجهت نفسي هذا الخطأ. تمكنت أخيرًا من معرفة التكوين.

  1. لم ألمس أي شيء في /etc/mysql/my.cnf الذي يحتوي بالفعل على bind_address = 127.0.0.1. لذلك فقط المضيف المحلي يمكنه الاتصال.
  2. يمكنني استخدام خادم OpenSSH. لذلك في ملف التكوين/etc/ssh/sshd_config تغيرت من لا إلى نعم المعلمة المسؤولة عن TCP إعادة التوجيه ، وبالتالي - AllowTcpForwarding نعم.
  3. أخيرًا ، قمت بإدخال التالي في MySQL WorkBench.

    • اسم مضيف SSH: 192.168.0.8:22 (يستمع خادم SSH إلى المنفذ 22)
    • اسم مستخدم SSH: sshuser
    • ملف مفتاح SSH: * C:\Users\windowsuser\.ssh\id_rsa * (يجب أن يكون مفتاحًا خاصًا ، على الرغم من أنه مكتوب عام)
    • اسم مضيف MySQL: 127.0.0.1 (هذا لا يجب تغييره ، لأن خادم MySQL افتراضيًا مرتبط بالمضيف المحلي فقط الذي لم أغيره)
    • منفذ MySQL Server: 3306 (افتراضي أيضًا)
    • اسم المستخدم: الجذر

الشيء الوحيد المتبقي لك هو تكوين خادم SSH بشكل صحيح للعمل مع المفاتيح بدلاً من كلمات المرور. امل ان يساعد هذا احد.

31
Eye

أعتقد أن نهج TCP/IP عبر SSH يعمل عن طريق إنشاء اتصال SSH "عادي" يقوم عليه اتصال MySQL (بنفس الطريقة التي تستخدم بها النفق باستخدام -L مع عميل سطر الأوامر OpenSSH).

لذلك ، ستحتاج إلى تحديد اتصال بخادم SSH على خادم تقوم من خلاله بإنشاء النفق. هنا ، يبدو أنك تستخدم mysql.myhost.com:3306 ، مما يعني أنك تقوم بتشغيل خادم SSH هذا (وليس MySQL) على المنفذ 3306.

من الممكن ربط خادم MySQL على 127.0.0.1:3306 وخادم SSH على عنوان IP الخارجي لـ mysql.myhost.com على المنفذ 3306 ، لكن هذا مستبعد جدًا. أعتقد أن خادم SSH الخاص بك يستمع على المنفذ 22 (الافتراضي).

ربما يجب عليك استخدام mysql.myhost.com:22. (تحقق من أنه يمكنك الاتصال به عبر عميل SSH عادي مثل PuTTY أيضًا.)

8
Bruno

قد تحتاج إلى التحقق من المستخدمين في الجدول mysql.user.

قم بتشغيل هذا الاستعلام:

SELECT user,Host FROM mysql.user;

يجب أن نرى شيئا من هذا القبيل:

mysql> SELECT user,Host,password FROM mysql.user;
+------------------+-------------+-------------------------------------------+
| user             | Host        | password                                  |
+------------------+-------------+-------------------------------------------+
| root             | localhost   | *7A670E02260CDEEFF062DD08F3A6F6DA079998CB |
| ping             | %           | *124E1DB56CC8D6E2FEE8315BB2544BF04B980DB6 |
| admin            | 10.67.135.% | 1a6858054a41fede                          |
| icorbin          | 10.67.135.% | 366ed93a7396650e                          |
+------------------+-------------+-------------------------------------------+
4 rows in set (0.00 sec)

من فضلك لاحظ أن

  • يمكن الجذر @ localhost تسجيل الدخول من localhost فقط.
  • يمكن لـ ping @ '٪' تسجيل الدخول عبر TCP/IP
  • يستطيع [email protected].٪ تسجيل الدخول عبر TCP/IP من netblock فقط
  • يمكن [email protected]٪ تسجيل الدخول عبر TCP/IP من netblock فقط

إذا كنت تريد أن يقوم الجذر بالاتصال عبر TCP/IP ، فيجب تحديد عنوان IP أو netblock لمستخدم الجذر.

شيء من هذا القبيل:

GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY 'whateverpassword';

أو إذا كانت كلمة مرور الجذر هي نفسها لـ root @ localhost إذن

GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY PASSWORD '*7A670E02260CDEEFF062DD08F3A6F6DA079998CB ';

CAVEAT: root @ '٪' غير موصى به بشكل عادي. ربما حاول [email protected]'10.٪ 'أو أي netblock أخرى لـ root.

جربها !!!

8
RolandoMySQLDBA

ربما تستخدم إصدارًا قديمًا من MySQL Workbench وتحتاج إلى التحديث. هذا خطأ في الإصدار 6.0.8 ، وهو الإصدار الحالي في مستودعات Ubuntu. التحديث إلى الإصدار 6.3.6 إصلاح هذا بالنسبة لي.

التنزيلات هنا: http://dev.mysql.com/downloads/workbench/#downloads

3
Gleasonator

الشيء الوحيد الذي لم يتم ذكره في أي إجابة أخرى هو أهمية تنسيق OpenSSH للمفتاح كما هو مذكور في SO ( https://stackoverflow.com/questions/34504232/mysql-workbench-failure-to-connect-via-ssh-due-to-key/38108623 # 3810862 ).

على الرغم من الإجابة هناك ، تمكنت من استخدام مفتاح محمي بكلمة مرور مع MySQL Workbench 6.3.7 (64 بت ، Windows 10).

2
Thomas

كانت مشكلتي ترجع إلى حقيقة أنني كنت أحاول استخدام ed25519 مفتاح SSH. لقد لاحظت هذا الخطأ على خادم SSH في auth.log:

sshd[25251]: Connection closed by 192.168.x.x [preauth]

بمجرد أن تحولت إلى استخدام مفتاح RSA ، عمل كل شيء كما هو متوقع.

2
jbiz

أنت تحاول الاتصال بالخادم عبر ssh ولكن باستخدام منفذ mysql. المنفذ الذي تريده هو كل ما يستمع إليه خادم ssh ، عادةً 22 ، ثم localhost و 3306 لاسم المضيف والمنفذ mysql.

1
Justin Buser

جئت مع نفس الخطأ. المشكلة هي "إلى حد ما" المهلة. لقد قمت بتدوير حتى القيمة حتى 120 ثانية والتي لم تساعد.

في حالتي ، يمكنني حلها عن طريق إجراء nslookup myserver.com واستخدام عنوان IP بدلاً من اسم المضيف. وافتراضي مشكلة في محاولة الاتصال من IPv4 إلى IPv6.

1
Markus Zeller

في بعض الأحيان ، لن تعمل المفاتيح التي تم إنشاؤها بواسطة PuTTY. استخدم ssh-keygen في صندوق Linux لإنشاء زوج مفاتيح. انسخ محتويات id_rsa إلى ملف نصي على Windows. تأكد من إضافة محتويات id_rsa.pub إلى key_keys في مربع Linux. كل الإعدادات الافتراضية الأخرى في Workbench جيدة بما في ذلك 127.0.0.1 لاسم MySQL Hostname. بالطبع يجب أن يكون معيار TCP/IP عبر SSH.

1
mcmacerson

أنا واجهت نفس المشكلة. راجعت وحاولت تعيين AllowTcpForwarding Yes لكنها كانت مفقودة في sshd_config الخاص بي ، لذا لا توجد مساعدة. تأكد من أن اسم مضيف ssh [~ # ~] ليس [~ # ~] نفس اسم مضيف الخلية (استخدم المضيف المحلي).

في منضدة العمل ، اختر + لإضافة اتصال جديد وقم بتعيين ما يلي:

  • طريقة التوصيل: معيار TCP/IP عبر SSH
  • اسم مضيف SSH: 192.168.0.50:22 (ضع عنوان IP ومنفذ خادم SSH عن بُعد (اختياري))
  • اسم مستخدم SSH: sshuser
  • يمكنك تعيين كلمة المرور أو الإضافة عند المطالبة
  • اسم مضيف MYSQL: localhost أو 127.0.0.1
  • منفذ MYSQL Server: 06
  • يمكنك تعيين كلمة المرور أو الإضافة عند المطالبة

اختبار الاتصال. يجب أن تكون ناجحة ثم اضغط OK.

1
Reagan Ochora

جئت مع نفس الخطأ. قضيتي:

  • أوبونتو 18.04
  • ماي سكل منضدة 8.0.18
  • الوصول إلى ssh بدون كلمة مرور (فقط عبر مفاتيح ssh العامة/الخاصة)

لقد قمت بحل هذه المشكلة بعد:

  1. إزالة mysql-workbench-community (سبق تثبيته عبر موقع الخلية):

    Sudo apt remove mysql-workbench-community -y

  2. تثبيت mysql-workbench

    Sudo apt install mysql-workbench -y

  3. إضافة اتصال جديد

  4. انقر فوق "تخزين في Keychain" لـ mysql (ليس لمستخدم ssh) وقم بتعيين كلمة المرور
  5. انقر فوق "اختبار دلالة"
  6. بعد كلمة المرور السريعة ، اترك الإدخال فارغًا وتحقق من "حفظ كلمة المرور"
  7. انقر فوق موافق"
0
ktretyak

يركض

SELECT user,Host FROM mysql.user;

وتأكد من أن المستخدم الذي تحاول تسجيل الدخول عليه من خلال Workbench يقول localhost في العمود المضيف وليس %.

إذا كان يقول % ، أصلحه مع:

UPDATE mysql.user SET Host="localhost" WHERE user="yourusername";

(بافتراض أنك قمت بإنشاء هذا المستخدم للعمل مع Workbench عبر SSH ، أو الدورة التدريبية ، حيث سيوقف ما سبق ذلك المستخدم من تسجيل الدخول عبر TCP البعيد)

0
Nick

حسنًا ، أعرف أن هذا سؤال قديم ، لكنني سحبت شعري لساعات. راجعت كل ما ذكره برونو والعين وبدا كل شيء جيدًا. ثم أدركت أنه كان حقًا مفتاحًا خاصًا/عامًا. لذلك قمت بتشغيل Pageant وأضفت مفتاحي الخاص ، بحيث يقوم بإنشاء مفتاح عام يمكن لـ MySQL Workbench قراءته وتوصيله! (لقد كان في الواقع نوعًا من عدم التفاؤل عندما بدأ MySQL Workbench العمل بالفعل ، ولكن بطريقة سعيدة.)

TLDR: استخدم Pageant لتوليد مفتاح عام من مفتاحك الخاص.

0
Bonnie

فقط واجهت نفس المشكلة على جهاز Ubuntu المتصل بخادم يقوم بتشغيل MySQL الإصدار 5.5.29 و MySQL Workbench 5.2.40. يتطلب خادم SSH استخدام مفتاح ssh.

لم أتمكن من الاتصال بخادم MySQL باستخدام المستخدم الجذر ، بدلاً من ذلك كان علي إنشاء مستخدم منفصل غير جذري لاستخدامه في تسجيل الدخول. بعد ذلك تمكنت من الاتصال على ما يرام.

أتمنى أن يساعدك هذا.

0
Kyle Coots