حلّ المجتمع

تثبيت MySQL على CasaOS باستخدام تخزين Docker دائم

A 2023 CasaOS tutorial introduced MySQL installation; current Docker Official Image guidance now defines versions, persistence, and initialization variables.

ثبّت MySQL على CasaOS باستخدام الصورة الرسمية لـ Docker، ووحدة تخزين دائمة لمسار /var/lib/mysql، ووسم إصدار صريح. لا تعتمد على لقطة شاشة قديمة من عام 2023 أو على وسم latest متغير لقاعدة بيانات مهمة بالنسبة إليك.

اعتبارًا من سبتمبر 2026، تنشر صورة Docker الرسمية MySQL 8.4 LTS، إلى جانب إصدارات أحدث من سلسلة 9.x/الإصدارات الابتكارية. بالنسبة إلى الخدمات المستضافة ذاتيًا لفترات طويلة، يُعد الإصدار 8.4 خط أساس مناسبًا للتوافق، ما لم يكن تطبيقك يدعم صراحةً إصدارًا رئيسيًا أحدث.

استخدم صورة MySQL الرسمية

إن الصورة الرسمية لـ MySQL على Docker الحالية تُصان بواسطة مجتمع Docker وفريق MySQL.

اختر وسم الإصدار بعناية

استخدم وسم إصدار رئيسي/إصدار دعم طويل الأمد (LTS) مثبتًا، مثل:

mysql:8.4

بدلًا من اتباع latest، التي يمكن أن تنتقل إلى إصدار رئيسي أحدث مع تغييرات في التوافق.

إعدادات CasaOS الدائمة

  • الصورة: mysql:8.4
  • منفذ الحاوية: 3306
  • وحدة تخزين دائمة: مسار AppData على المضيف → /var/lib/mysql
  • MYSQL_ROOT_PASSWORD: كلمة مرور root قوية لبدء التشغيل
  • اختياري: استخدم, MYSQL_DATABASE, MYSQL_PASSWORD

لا تعرّض المنفذ 3306 للإنترنت

إذا كان تطبيق Docker آخر على المضيف نفسه يحتاج إلى MySQL، فضع الخدمتين على شبكة Docker مشتركة واستخدم اسم الخدمة. غالبًا لن تحتاج إلى نشر المنفذ 3306 للعامة على الإطلاق.

Create an Application User Instead of Using Root

أنشئ مستخدمًا للتطبيق بدلًا من استخدام root استخدم, MYSQL_DATABASE، وMYSQL_USER MYSQL_PASSWORD أثناء التهيئة الأولى لإنشاء قاعدة بيانات وحساب خاصين بالتطبيق.

احتفظ بالمستخدم root لأغراض الإدارة والاسترداد.

افهم متغيرات البيئة الخاصة بالتشغيل الأول

تُهيِّئ الصورة الرسمية قاعدة البيانات فقط عندما يكون مجلد البيانات فارغًا. تغيير متغيرات بيئة الإقلاع لاحقًا لا يعيد تلقائيًا كتابة الحسابات أو قواعد البيانات الموجودة.

النسخ الاحتياطي باستخدام عمليات التفريغ المنطقية

للنسخ الاحتياطية القابلة للنقل، استخدم mysqldump أو باستخدام نمط التفريغ/الاستعادة الموثَّق للصورة الرسمية، بدلًا من نسخ ملفات قاعدة البيانات النشطة أثناء كتابة MySQL عليها.

توصيل phpMyAdmin أو تطبيق آخر باسم الخدمة

على شبكة Docker مشتركة، يمكن لتطبيق ويب الاتصال بـ MySQL باستخدام اسم مضيف الخدمة/الحاوية، مثل mysql. داخل حاوية أخرى، localhost يشير إلى تلك الحاوية نفسها.

يوضح دليل شبكات Docker نموذج الشبكة الخاص بالحاويات.

تحقّق من صحة MySQL قبل توصيل التطبيقات الأخرى

بعد التشغيل الأول، لا توجّه تطبيقات الإنتاج إلى قاعدة البيانات فورًا. تحقّق من سجلات الحاوية وتأكد من أن MySQL أتم التهيئة ولم يبقَ في حلقة إعادة تشغيل.

docker logs mysql
docker exec -it mysql mysqladmin -uroot -p ping

يجب أن يستجيب الخادم السليم بعد انتهاء إعداد قاعدة البيانات الأولي. قد يستغرق التشغيل الأول وقتًا أطول لأن الصورة تنشئ جداول النظام والمستخدمين وقاعدة البيانات المطلوبة.

خطّط لمجموعة الأحرف والمنطقة الزمنية قبل استيراد البيانات

قد تتطلب التطبيقات إعدادات محددة لترتيب الفرز أو مجموعة الأحرف أو المنطقة الزمنية. إذا كنت ترحّل قاعدة بيانات موجودة، فقارن إصدار MySQL الرئيسي وإعداداته على الخادم القديم قبل الاستيراد.

لا تفترض أن تطبيقًا اختُبر على MySQL 8.0 سيدعم MySQL 9.x تلقائيًا لمجرد أن الحاوية بدأت التشغيل. ثبّت الإصدار الرئيسي الذي يطلبه مورّد التطبيق.

افصل مساحة تخزين قاعدة البيانات عن المجلدات المشتركة العامة

يجب أن تكون ملفات بيانات MySQL على مساحة تخزين محلية موثوقة ذات أذونات ثابتة وزمن استجابة منخفض. لا تضعها /var/lib/mysql على نقطة تحميل SMB غير موثوقة أو محرك أقراص قابل للإزالة لمجرد أنه يوفر سعة أكبر.

إذا كان مضيف CasaOS يحتوي على SSD ومجموعة أقراص HDD أكبر، فعادةً ما يكون SSD الموقع الأفضل لقاعدة البيانات، بينما يمكن نسخ عمليات التفريغ المجدولة إلى مساحة التخزين الاحتياطية الأكبر.

الأسئلة الشائعة

هل ينبغي أن أستخدم mysql:latest؟

فضّل استخدام وسم محدد للإصدار الرئيسي/طويل الدعم (LTS) في الاستضافة الذاتية الشبيهة ببيئات الإنتاج، حتى لا يؤدي السحب المعتاد إلى الانتقال بشكل غير متوقع إلى إصدارات رئيسية أحدث.

أين يجب أن تستمر بيانات MySQL؟

اربط مجلد AppData على المضيف بـ /var/lib/mysql.

هل أحتاج إلى نشر المنفذ 3306؟

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

هل يمكنني تغيير MYSQL_ROOT_PASSWORD لاحقًا عن طريق تعديل متغير الحاوية؟

ليس بشكل موثوق بعد التهيئة. أدر حسابات قاعدة البيانات الحالية من داخل MySQL نفسه.