it-swarm.asia

لا يمكن الاتصال بقاعدة بيانات MySQL عبر SSH مع Workbench

أحاول الاتصال بقاعدة البيانات الخاصة بي عبر نفق SSH من أحد خوادم تطبيقات الويب لدينا باستخدام MySQL Workbench. هنا التكوين الأساسي ؛ لاحظ أنني قمت بتغيير بعض القيم في لقطة الشاشة لأسباب أمنية.

Workbench screenshot

تكمن المشكلة في كل مرة أحاول الاتصال عبر نفق SSH من أحد خوادم التطبيقات لدينا ، أتلقى الخطأ التالي:

فشل الاتصال بنا-east-1.amazonaws.com من خلال نفق SSH على computer.amazonaws.com مع المستخدم social_shop_prod. لا يمكن الاتصال بخادم MySQL على 127.0.0.1.

ومع ذلك ، إذا استخدمت نفس بيانات الاعتماد عبر SSH عبر سطر الأوامر التالي:

mysql -u social_shop_prod -h us-east-1.amazonaws.com -p

يمكنني الاتصال بنجاح والحصول على موجه أوامر MySQL التفاعلية.

كنت أتحدث مع بقية فريق التطوير الخاص بي هنا ولا أحد منا يستطيع معرفة لماذا لا يمكنني إجراء نفق عبر SSH من خوادم التطبيقات لدينا مع Workbench ؛ ولكن عندما أقوم بـ SSH بأحد خوادم التطبيقات الخاصة بنا والاتصال بـ MySQL عبر سطر الأوامر ؛ يمكنني الاتصال بنجاح.

ولماذا تحاول الاتصال عبر 127.0.0.1؟ لم أحدد ذلك في التكوين ؛ كما لا يقوم ملف المضيفين بإعادة توجيه المجالات الموضحة أدناه إلى عنوان IP هذا.

أي مساهمة بناءة موضع تقدير كبير.

10
Frank Rosario

نظرًا لأنك تقوم بالاتصال من خلال نفق SSH ، فهذا يعني أن منفذ MySQL 3306 من us-east-1.amazonaws.com يتم فتحه محليًا على جهاز الكمبيوتر الخاص بك. عنوان IP لجهاز الكمبيوتر الخاص بك هو 127.0.0.1 أو localhost. عند الاتصال بخادم mysql على us-east-1.amazonaws.com ، فأنت في الواقع تقوم بالوصول إليه عبر 127.0.0.1 ، أي جهاز الكمبيوتر الخاص بك. إذا كان لديك نفق آخر مفتوح ، أو يعمل MySQL محليًا على جهاز الكمبيوتر الخاص بك ، فقد يكون خادم MySQL الآخر الذي يرفض محاولات المصادقة الخاصة بك

هناك بعض الاختبارات التي يمكنك تجربتها:

1. ما المنافذ التي تستمع إليها في كمبيوتر Windows

من موجه الأوامر: netstat -a (يسرد كافة المنافذ المفتوحة)

في لينكس سيكون: netstat -tlpn

2. اختبار الاتصال الأساسي

من موجه أوامر DOS أو وحدة تحكم Linux: telnet 127.0.0.1 3306

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

. قم بتغيير رقم المنفذ الذي يفتحه MySQL Workbench محليًا

نحن نفترض أن منضدة MySQL تقوم بإنشاء النفق على جهاز الكمبيوتر الخاص بك. إذا كان الأمر كذلك ، في منضدة MySQL ، فحاول استخدام نفق من خلال رقم منفذ آخر مثل 9000.

تأكد من عدم إدراج 9000 كمنفذ مفتوح من: netstat -a

إذا كان لديك وصول ssh لنا-east-1.amazonaws.com

4. حاول الاتصال بـ MySQL من us-east-1.amazonaws.com

mysql -u myuser -h 127.0.0.1 -p

وكما قال Rolando ، ستحتاج إلى التحقق من أنك متصل ببيانات الاعتماد الصحيحة. على سبيل المثال ، إذا كنت تقوم بالاتصال باسم [email protected] وكان لديك مستخدم myuser بدون مضيف ، فربما لن تتمكن من الاتصال باستخدام [email protected]

5
Craig Efrein

يرجع سبب الاتصال 127.0.0.1 إلى أن النفق يربط منفذًا على جهازك المحلي بالمضيف البعيد. يبدو أن الرسالة تشير إلى أنه لم يتم إنشاء اتصال SSH.

جرب هذا من سطر الأوامر:

ssh -L 33000:remotehost:3306 [email protected]

تأكد من أن SSH يسمح بالمنافذ المعاد توجيهها ؛ إذا تلقيت رسالة تنص على أن إعادة التوجيه غير مسموح بها أو تم رفضها ، فهذا هو السبب.

لإصلاح ذلك ، يجب عليك تغيير تكوين الخادم ؛ أضف هذا التكوين إلى خادم SSH:

AllowTcpForwarding yes

لا تنس إعادة تشغيل الخادم لتنشيط هذا التكوين.

2
Mei

ظللت أتعامل مع هذه المشكلة لما يقرب من أسبوعين حتى الآن تمكنت من تعيينها. سأقوم بنشرها هنا حتى يتمكن المزيد من الناس من تجربتها.

حسنًا ، أنا أستخدم OpenSSH (Win10 original) و Workbench 8.

خطوة بخطوة:
1. أضف مفاتيح مضيف SSH إلى الوكيل باستخدام ssh-add.
2. قم بتوليد أزواج المفاتيح باستخدام ssh-keygen. في حالتي ، هذه الملفات تنتقل تلقائيًا إلى Users/myUser/.ssh حسب تكوينات التثبيت.
3. أضف المفتاح العمومي إلى الملف المصرح به الملف (الذي يجب أن يكون داخل مسار تثبيت الخادم الخاص بك ، في حالتي Windows/System32/OpenSSH/.ssh) بدون ملحقات.
4. أضف المفاتيح التي تم إنشاؤها للتو إلى الوكيل باستخدام ssh-add.

الخطوات أعلاه هي إلى حد كبير تكوين خادم سطر الأوامر SSH الذي اكتشفت أن OP فعلته بالفعل لاتصاله يعمل من خلال المحطة الطرفية. لتكوين MySQL Workbench 8 ، تقوم بنفس الشيء تقريبًا باستثناء أنه يجب عليك تحويل private_key.pem إلى تنسيق OpenSSH قبل نقلهم إلى Users/myUser/.ssh و OpenSSH_instalation_path/.ssh

  1. تحويل ( private_key.pem إلى تنسيق OpenSSH باستخدام PUTTYgen.
  2. انسخ "المفتاح العام للصق في OpenSSH المصرح لها" الحقل.
  3. احفظ المفتاح العمومي في المجلدات User/myUser/.ssh و OpenSSH_instalation_path/.ssh
  4. قم بلصق المفتاح الذي نسخته من PuTTY إلى ملف المصرح به في الملف OpenSSH_instalation_path/.ssh مجلد.
  5. تصدير مفتاح تنسيق OpenSSH إلى User/myUser/.ssh.
  6. إعادة تشغيل خدمات sshd و mysql
  7. قم بتكوين Workbench للاتصال بخادم SSH باستخدام المفتاح الخاص المحول.

تحديث: ستحتاج إلى تعيين ما يلي في ملف sshd_config الخاص بك:

PermitRootLogin بدون كلمة مرور
PubkeyAuthentication نعم
كلمة المرور
PermitEmptyPasswords no
AllowTcpForwarding yes

يرجى القراءة:

أنا محلل قليل الخبرة ، لذلك إذا كان المستخدم الأكثر تقدمًا يعرف أي من مجلدي .ssh هو الصحيح ، فيرجى إخبارنا. أجد OpenSSH kinda غامضة حول هذا الموضوع.
نجح هذا معي أثناء إعداد بيئة تطوير محلية باستخدام localhost فقط. فقط لأغراض التعلم.
قد ترغب في إضافة myUser @ localhost إلى مستخدمي MySQL Workbench قبل اختبار الاتصال.
إذا لزم الأمر ، يمكنني إضافة صور.

1
Rafael Corrêa

لقد واجهت مشكلة مماثلة ، وقد يكون هذا غامضًا ، ولكن تحقق من قواعد جدار الحماية في AWS. لديّ نطاق IP لتقييد الاتصالات من العالم الخارجي. وتغير عنوان IP في مكتبي ، لذلك خرج عن نطاق IP. زميلي في مكتب آخر لا يزال بإمكانه الاتصال ، لذلك اعتقدت أن المشكلة موجودة على جهاز الكمبيوتر الخاص بي ، ولكن كانت المشكلة مع قواعد جدار الحماية في AWS. امل ان يساعد شخص ما :)

0
Asped

في حالتي المشكلة كان علي العودة إلى اسم مجال صالح أو IP بدلاً من حل مضيف مخصص محليًا.

فشل دقة المضيف المخصص (/etc/hosts)

أنا أعمل مع آلية حل المضيفين المحلية التي حددت:

#.#.#.#    my-vm

لسبب ما مع MySQL 5.2.47 في Linux Mint 14 (Nadia) التي تشبه Ubuntu 12.10 (Quantal)آلية الدقة لا تعمل.

المحلول

ببساطة التبديل إلى اسم المجال العام مثل my-website.com لحل المشكلة.

0
Édouard Lopez

انظر هنا للحصول على قائمة من الموارد للاتصال بأهداف مختلفة (Amazon RDS و Amazon EC2 و Windows Azure وغيرها): http://forums.mysql.com/read.php؟152،252640،252640#msg -25264 .

0
Mike Lischke