# الاتصال بقاعدة بياناتك عبر نفق SSH

Source: https://support.kapsulehost.com/ar-ae/database-ssh-tunnel

قاعدة بيانات موقعك لا تستجيب إلا على عنوان الاسترجاع الذاتي (loopback) الخاص بالخادم نفسه، لذلك لا يمكن لأداة سطح مكتب مثل TablePlus أو Sequel Ace أو DBeaver أو MySQL Workbench الاتصال بها مباشرة. نفق SSH يمنح هذه الأدوات منفذًا محليًا يُوجَّه إلى قاعدة البيانات، وهذه هي الطريقة التي تحصل بها على واجهة رسومية سليمة للوصول إلى بياناتك دون فتح MySQL على الإنترنت.

## لماذا يلزم وجود نفق

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

يسد نفق SSH هذه الثغرة بأمان. يفتح عميل SSH لديك منفذًا على حاسوبك المحمول، ويشفّر كل ما ترسله إليه، ويسلّمه إلى قاعدة البيانات من داخل الخادم، تمامًا كما لو أن عملية محلية قد اتصلت بها.

![علامة تبويب قاعدة البيانات تعرض تفاصيل الاتصال في KPanel](https://support.kapsulehost.com/help/screenshots/database-ssh-tunnel.84df4ba6.webp)

## ما تحتاجه أولًا

> **Note:** النفق هو اتصال SSH، لذا تحتاج إلى مفتاح SSH مسجَّل على الموقع قبل أن يعمل أي من هذا. اتبع [إضافة مفاتيح SSH إلى موقع](https://support.kapsulehost.com/ar-ae/adding-ssh-keys) أولًا، ثم عد إلى هنا.

اجمع أربعة عناصر:

- **مضيف SSH ومنفذه واسم المستخدم**، من **الإعدادات**، ثم **مفاتيح SSH**، في بطاقة **تفاصيل الاتصال**.
- **اسم قاعدة البيانات واسم المستخدم وكلمة المرور**، من **قاعدة البيانات**. انقر على أيقونة العين لإظهار كلمة المرور وأيقونة النسخ لوضعها في الحافظة.

إذا ظهرت في علامة تبويب قاعدة البيانات عبارة **No database provisioned for this site type**، فهذا يعني أن هذا الموقع لا يملك قاعدة بيانات. تُنشأ المواقع الثابتة وبعض مواقع Node.js دون قاعدة بيانات.

## فتح النفق من الطرفية

الشكل العام هو: توجيه منفذ محلي إلى `127.0.0.1:3306` على الطرف الآخر من اتصال SSH.

```sh
ssh -N -L 3307:127.0.0.1:3306 <ssh-username>@<ssh-host> -p <ssh-port>
```

- `-L 3307:127.0.0.1:3306` يفتح المنفذ 3307 على جهازك ويوجّهه إلى المنفذ 3306 على واجهة الاسترجاع الذاتي الخاصة بالخادم.
- `-N` تعني عدم تشغيل أي صدفة (shell)، بل الإبقاء على النفق مفتوحًا فقط.
- أضف `-i /path/to/key` إذا لم يكن المفتاح الخاص بهذا الموقع هو المفتاح الافتراضي لديك.

اترك نافذة الطرفية تلك قيد التشغيل. وطالما هي مفتوحة، فإن `127.0.0.1:3307` على حاسوبك المحمول هي قاعدة بيانات الموقع.

> **Tip:** استخدم المنفذ 3307 محليًا بدلًا من 3306. فإذا كان لديك MySQL أو MariaDB مثبّتًا على جهازك الخاص، فهو يستخدم المنفذ 3306 بالفعل، وسيفشل النفق في الربط برسالة خطأ "address already in use". أي منفذ محلي متاح يصلح.

## توجيه عميل قاعدة البيانات نحو النفق

في عميل الواجهة الرسومية لديك، أنشئ اتصال MySQL عاديًا بالقيم التالية:

| الحقل | القيمة |
|---|---|
| المضيف | `127.0.0.1` |
| المنفذ | `3307` (أيًّا كان المنفذ المحلي الذي وجّهته) |
| المستخدم | **اسم المستخدم** من علامة تبويب قاعدة البيانات |
| كلمة المرور | **كلمة المرور** من علامة تبويب قاعدة البيانات |
| قاعدة البيانات | اسم **قاعدة البيانات** من علامة تبويب قاعدة البيانات |

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

### العملاء ذوو علامة تبويب SSH مدمجة

يمكن لكل من TablePlus وSequel Ace وDBeaver وMySQL Workbench إدارة النفق بنفسها، ما يغنيك عن إبقاء الطرفية مفتوحة. املأ مجموعتين من الحقول:

- **قسم SSH**: المضيف، والمنفذ، واسم المستخدم، وملف المفتاح الخاص من صفحة مفاتيح SSH.
- **قسم قاعدة البيانات**: المضيف `127.0.0.1`، والمنفذ `3306`، إضافة إلى اسم قاعدة البيانات والمستخدم وكلمة المرور من علامة تبويب قاعدة البيانات.

عندما ينشئ العميل النفق، استخدم `3306` في قسم قاعدة البيانات بدلًا من المنفذ المحلي الذي وجّهته. فالعميل يتصل من وجهة نظر الخادم، لذا يرى المنفذ الحقيقي.

## استخدام phpMyAdmin بدلًا من ذلك

إذا كنت تحتاج فقط إلى إلقاء نظرة سريعة على جدول، فلست بحاجة إلى نفق على الإطلاق. تحتوي علامة تبويب قاعدة البيانات على بطاقة **phpMyAdmin** بها زر **فتح phpMyAdmin**. يقوم هذا الزر بتسجيل دخولك عبر KPanel، لذا لا توجد كلمة مرور منفصلة لتذكّرها، ويفتح في علامة تبويب جديدة موجَّهة بالفعل إلى قاعدة بيانات هذا الموقع.

يُعد phpMyAdmin الخيار الأسرع للتصفح، أو لتشغيل استعلام لمرة واحدة، أو للتحقق من قيمة ما. أما عميل سطح المكتب عبر نفق فهو أفضل للتصديرات الكبيرة، والعمل على المخطط (schema)، وأي شيء تريد برمجته (script). راجع [استخدام phpMyAdmin](https://support.kapsulehost.com/ar-ae/sites-phpmyadmin) لمعرفة المسار عبر المتصفح.

## تشغيل الاستعلامات والتفريغات عبر النفق

مع فتح النفق، تعمل أدوات سطر الأوامر القياسية كالمعتاد، موجَّهة إلى المنفذ المحلي الذي وجّهته:

```sh
mysql -h 127.0.0.1 -P 3307 -u <db-user> -p <db-name>

mysqldump -h 127.0.0.1 -P 3307 -u <db-user> -p <db-name> > backup.sql
```

> **Warning:** التفريغ اليدوي نسخة مريحة، وليس استراتيجية نسخ احتياطي. فهو حديث فقط بقدر حداثة اللحظة التي نفّذته فيها، ويبقى على أي حاسوب محمول نفّذته منه. تأخذ KapsuleHost بالفعل نسخًا احتياطية يومية تلقائية للموقع، يُحتفظ بها لمدة 30 يومًا. راجع [أخذ نسخة احتياطية](https://support.kapsulehost.com/ar-ae/taking-a-backup) قبل أن تعتمد على ملف `.sql` محلي.

## استكشاف الأخطاء وإصلاحها

**"Address already in use" عند فتح النفق.** شيء ما على جهازك يستخدم ذلك المنفذ المحلي بالفعل. اختر منفذًا آخر، مثل `-L 3399:127.0.0.1:3306`، وغيّر المنفذ في عميلك ليطابقه.

**"Connection refused" من عميل قاعدة البيانات.** النفق غير قائم. تحقق من أن طرفية SSH لا تزال قيد التشغيل ولم تطبع خطأً، وأن المنفذ في عميلك يطابق المنفذ المحلي في وسيط `-L`.

**يتصل SSH لكن العميل ما زال ينتهي بمهلة.** تأكد من أنك وجّهت إلى `127.0.0.1:3306` وليس إلى اسم المضيف العام. فالتوجيه إلى الاسم العام يطلب من الخادم الوصول إلى قاعدة البيانات عبر الإنترنت، وهذا بالضبط ما هو محظور.

**"Access denied for user".** نجح تسجيل الدخول عبر SSH لكن بيانات اعتماد MySQL خاطئة. انسخ اسم المستخدم وكلمة المرور مجددًا من علامة تبويب قاعدة البيانات باستخدام أيقونات النسخ بدلًا من كتابتهما يدويًا، وتحقق من أنك تتصل باسم قاعدة البيانات الصحيح.

**Permission denied (publickey) قبل أن تصل حتى إلى MySQL.** هذه مشكلة في طبقة SSH، وليست في قاعدة البيانات. اتبع قسم استكشاف الأخطاء وإصلاحها في [إضافة مفاتيح SSH إلى موقع](https://support.kapsulehost.com/ar-ae/adding-ssh-keys).

## إلى أين تذهب بعد ذلك

- [رفع الملفات عبر SFTP](https://support.kapsulehost.com/ar-ae/sftp-access) يستخدم بيانات اعتماد SSH نفسها لنقل الملفات.
- [استخدام phpMyAdmin](https://support.kapsulehost.com/ar-ae/sites-phpmyadmin) للعمل على قاعدة البيانات عبر المتصفح.
- [الاستعادة من نسخة احتياطية](https://support.kapsulehost.com/ar-ae/restoring-from-backup) إذا ذهب استعلام ما أبعد مما قصدته.
