الفرق بين MySQL و MariaDB والمميزات

📘 أولاً: ما هي MySQL و MariaDB؟

  • MySQL: قاعدة بيانات SQL شهيرة جدًا، كانت مفتوحة المصدر بالكامل، لكن الآن تُطوَّر وتُدار من شركة Oracle بعد أن اشترتها.

  • MariaDB: انشقاق (Fork) من MySQL أنشأه نفس مطور MySQL الأصلي بعد شراء Oracle للمشروع، وذلك ليبقي قاعدة بيانات حرة ومفتوحة المصدر بالكامل.


⚙️ ثانيًا: الفرق بينهما تقنيًا

المقارنةMySQLMariaDB
المالكOracleمجتمع مفتوح + MariaDB Foundation
الترخيصمصدر مفتوح + بعض مكونات مغلقةمفتوحة المصدر بالكامل
الأداء (Performance)ممتازغالبًا أسرع بقليل في بعض العمليات
التوافق (Compatibility)MariaDB صُممت لتكون متوافقة مع MySQL (يمكنك تقريبًا استخدام نفس الأكواد والـqueries)100% متوافقة تقريبًا مع MySQL حتى الإصدار 5.7
المزايا الجديدةبطيئة في التحديث لأن Oracle تتحكم بالإصداراتأسرع في إضافة مزايا جديدة ومحركات تخزين إضافية
محركات التخزين (Storage Engines)InnoDB, MyISAM وغيرهاInnoDB, Aria, TokuDB, ColumnStore, وغيرها (أكثر تنوعًا)
الدعم في PHPMyAdminمدعوم تمامًامدعوم تمامًا (نفس الواجهة)

💡 ثالثًا: ماذا يعني هذا بالنسبة لك في phpMyAdmin demo؟

في phpMyAdmin demo، عندك خيارين:

  1. phpMyAdmin demo - MySQL (root)
    → متصل بسيرفر MySQL تقليدي (عادةً الإصدار 8.x أو 5.7).
    → مفيد لو تريد بيئة مشابهة لما يستخدمه معظم الاستضافات التجارية (مثل Hostinger, GoDaddy, إلخ).

  2. phpMyAdmin demo - MariaDB (root)
    → متصل بسيرفر MariaDB (عادةً الإصدار 10.x أو 11.x).
    → ممتاز لو أنت تستخدم XAMPP, Laragon, أو MAMP محليًا، لأن أغلبها الآن تعتمد MariaDB بدل MySQL.


⚖️ رابعًا: طيب، أيهما “الأفضل” فعليًا؟

يعتمد على الاستخدام 👇

الاستخدامالأفضل
تطوير محلي (XAMPP, Laragon, إلخ)✅ MariaDB
استضافة ويب عادية (shared hosting)غالبًا ✅ MySQL
مشروع مفتوح المصدر بالكامل✅ MariaDB
تحتاج توافق 100% مع قواعد بيانات شركات كبيرة أو أنظمة تعتمد Oracle✅ MySQL
تبحث عن أداء أعلى وإضافات جديدة✅ MariaDB

🔍 الخلاصة السريعة

  • كلاهما يعملان بنفس الأوامر SQL تقريبًا.

  • في phpMyAdmin ستتعامل مع نفس الواجهة ونفس الجداول ونفس الأكواد.

  • الفرق الأساسي في من يطورها والميزات المتقدمة والترخيص.

  • للمشاريع الصغيرة أو التعليمية → خذ MariaDB.

  • للمشاريع الإنتاجية الكبيرة أو التي تتطلب استقرارًا طويل الأمد → خذ MySQL.

الاتصال بلغة PHP مع قاعدة البيانات لكل من MySQL و MariaDB مع أمثلة عملية جاهزة.


🔧 أولاً: مبدأ الاتصال (نفس الكود تقريبًا)

الجميل أن MariaDB = MySQL في الكود تقريبًا 100%، لأنهما يستخدمان نفس بروتوكول الاتصال ونفس الدرايفر (mysqli أو PDO).

يعني لو كتبت كود يعمل مع MySQL، فهو سيعمل مع MariaDB بدون أي تعديل يُذكر. ✅


🧩 ثانياً: مثال اتصال باستخدام mysqli

<?php $host = "localhost"// أو عنوان السيرفر $user = "root"// اسم المستخدم $pass = ""// كلمة المرور (غالباً فارغة في السيرفر المحلي) $db = "test_db"// اسم قاعدة البيانات // إنشاء الاتصال $conn = new mysqli($host$user$pass$db); // التحقق من الاتصال if ($conn->connect_error) { die("فشل الاتصال: " . $conn->connect_error); } echo "✅ تم الاتصال بقاعدة البيانات بنجاح!"// تنفيذ استعلام بسيط $result = $conn->query("SELECT NOW() as current_time"); $row = $result->fetch_assoc(); echo "<br>الوقت الحالي في السيرفر: " . $row['current_time']; $conn->close(); ?>

📘 هذا الكود يعمل تمامًا سواء كانت القاعدة MySQL أو MariaDB.


🧱 ثالثاً: مثال باستخدام PDO (أنصح به لأنه أكثر أمانًا)

<?php $dsn = "mysql:host=localhost;dbname=test_db;charset=utf8mb4"$user = "root"$pass = ""try { $pdo = new PDO($dsn$user$pass); // تفعيل الأخطاء على شكل استثناءات $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "✅ تم الاتصال بنجاح بقاعدة البيانات"// تنفيذ استعلام تجريبي $stmt = $pdo->query("SELECT VERSION() AS db_version"); $row = $stmt->fetch(PDO::FETCH_ASSOC); echo "<br>إصدار قاعدة البيانات: " . $row['db_version']; } catch (PDOException $e) { die("❌ فشل الاتصال: " . $e->getMessage()); } ?>
 

📘 نفس الكود هذا سيتصل بـ:

  • MySQL إذا كنت تستخدم MySQL Server.

  • MariaDB إذا كانت المثبّتة هي MariaDB Server.

الفرق الوحيد هو الإصدار الذي سيظهر في db_version.


🧠 رابعاً: معرفة الفرق من داخل الكود

لو أردت أن تعرف من داخل PHP هل أنت متصل بـ MySQL أم MariaDB:

$stmt = $pdo->query("SELECT VERSION() AS version"); $row = $stmt->fetch(); if (stripos($row['version'], 'MariaDB') !== false) { echo "أنت تستخدم MariaDB 🟢"; } else { echo "أنت تستخدم MySQL 🔵"; }
 

🧮 خامساً: التوصية العملية

الحالةالتوصية
تستخدم XAMPP أو Laragon أو MAMP محليًا✅ استخدم MariaDB (هي الافتراضية عادةً)
ترفع مشروعك على استضافة مثل Hostinger / GoDaddy / Bluehost✅ استخدم MySQL
تريد بيئة مفتوحة المصدر ومستقلة عن Oracle✅ استخدم MariaDB
مشروع كبير مع دعم شركات / أدوات تعتمد MySQL 8+✅ استخدم MySQL

💬 سادساً: ملاحظات مهمة للمطورين

  • mysqli أسرع قليلاً، لكن PDO أكثر مرونة (يدعم قواعد بيانات أخرى غير MySQL).

  • استخدم دائمًا charset=utf8mb4 لتفادي مشاكل اللغة العربية أو الإيموجي.

  • لا تضع بيانات الاتصال (user/pass) في كود مباشر بالموقع الإنتاجي.
    استخدم ملف إعدادات خارجي config.php وضعه خارج مجلد public_html.

 

إرسال تعليق

0 تعليقات