كيفية تهيئة MariaDB على خادم Linux في عام 2026قم بتثبيت أحدث إصدار LTS، وشغّل mysql_secure_installation، واضبط ملف my.cnf لتحسين الأداء والأمان (ذاكرة InnoDB، والسجلات، وعنوان الربط، وTLS)، وأنشئ مستخدمين بأقل صلاحيات، وفعّل النسخ الاحتياطي والمراقبة، وعزّز جدار الحماية. تتضمن الخطوات أدناه أوامر لأنظمة Ubuntu وDebian وRHEL وAlmaLinux وRocky Linux.
يُعدّ إعداد MariaDB على خادم Linux أمرًا بسيطًا عند اتباع خطة مُنظّمة. يُوضّح لك هذا الدليل خطوة بخطوة كيفية تثبيت MariaDB وتأمينه وتحسين أدائه وصيانته بإعدادات مُناسبة للإنتاج. ستتعلّم كيفية ضبط ملف my.cnf، وتأمين الوصول، وإنشاء المستخدمين، وإعداد النسخ الاحتياطية، ومراقبة الأداء باستخدام أوامر عملية وإعدادات مُجرّبة.
لمن هذا الدليل؟
هذا الدليل سهل الفهم للمبتدئين، ولكنه مفصل بما يكفي لمسؤولي الأنظمة. سواء كنت تستخدم نظام Ubuntu أو Debian أو AlmaLinux أو Rocky أو RHEL، ستجد أوامر خاصة بتوزيعتك وإعدادات تتوافق مع بيئات العمل الواقعية.
المتطلبات الأساسية ومتطلبات النظام
- خادم لينكس مع إمكانية الوصول إلى sudo/root (Ubuntu 20.04/22.04/24.04، Debian 12، AlmaLinux/Rocky 8/9، RHEL 8/9)
- 2 جيجا بايت على الأقل RAM لأحمال العمل الخفيفة؛ 4-8 جيجابايت فأكثر لقواعد بيانات الإنتاج
- المنافذ المفتوحة: 22 (SSH)، 3306 (MariaDB) — تقييد الوصول باستخدام جدار الحماية أو الشبكة الخاصة
- مزامنة دقيقة للوقت (chrony أو systemd-timesyncd)
الخطوة 1 - تثبيت MariaDB على نظام Linux
استخدم حزمة التوزيع الخاصة بك manageيمكنك تثبيت أحدث إصدار مستقر طويل الأمد (LTS) من MariaDB من مستودعها الرسمي (اعتبارًا من عام 2026، يُستخدم الإصداران MariaDB 10.6 و10.11 LTS بشكل شائع). يُفضل استخدام مستودع المورّد للحصول على تحديثات أمنية في الوقت المناسب.
أوبونتو / ديبيان
sudo apt update
sudo apt install -y software-properties-common gnupg
# Optional: add official MariaDB repo for newer builds (adjust version if needed)
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,arm64] http://mirror.mariadb.org/repo/10.11/ubuntu jammy main' # Example for Ubuntu 22.04
sudo apt update
sudo apt install -y mariadb-server mariadb-client
# Enable and start
sudo systemctl enable mariadb
sudo systemctl start mariadb
# Verify
mariadb --version
sudo systemctl status mariadb --no-pagerRHEL/AlmaLinux/Rocky
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --set-enabled crb || true
# Optional: official MariaDB repo (adjust version and release)
sudo tee /etc/yum.repos.d/MariaDB.repo >/dev/null <<'EOF'
# MariaDB 10.11 (example)
[mariadb]
name = MariaDB
baseurl = https://mirror.mariadb.org/yum/10.11/rhel/$releasever/$basearch
gpgkey=https://mariadb.org/mariadb_release_signing_key.asc
gpgcheck=1
enabled=1
EOF
sudo dnf -y install MariaDB-server MariaDB-client
# Enable and start
sudo systemctl enable mariadb
sudo systemctl start mariadb
# Verify
mariadb --version
sudo systemctl status mariadb --no-pagerالخطوة الثانية - تأمين التثبيت
قم بتشغيل برنامج التحصين المدمج، وقم بتعيين كلمة مرور قوية للمستخدم الجذر، وقم بإزالة قواعد البيانات التجريبية، وقم بتعطيل الوصول عن بُعد إلى المستخدم الجذر.
sudo mysql_secure_installation
# Recommended choices:
# - Set root password: Yes (use a long, random passphrase)
# - Remove anonymous users: Yes
# - Disallow root login remotely: Yes
# - Remove test database and access: Yes
# - Reload privilege tables: Yesفي إصدارات MariaDB الحديثة، يمكن للمستخدم الجذر المصادقة عبر unix_socket على المضيف المحلي، وهو أمر آمن. إذا قمت بالتغيير إلى المصادقة القائمة على كلمة المرور، فتأكد من استخدام بيانات اعتماد قوية. SSH النفق أو الشبكات الخاصة لأغراض الإدارة.
الخطوة 3 - تعرف على ملفات تكوين MariaDB الخاصة بك
يقرأ MariaDB ملفات تكوين متعددة. الملف الرئيسي هو my.cnf، ولكن الملفات المضمنة تسمح لك بتقسيم التكوينات حسب الغرض (الخادم، العميل، الأداء، النسخ المتماثل).
- عالمي: /etc/mysql/my.cnf (أوبونتو/ديبيان) أو /etc/my.cnf (عائلة RHEL)
- المجلدات المضمنة: /etc/mysql/mariadb.conf.d/، /etc/mysql/conf.d/ (عائلة Debian) أو /etc/my.cnf.d/ (عائلة RHEL)
- دليل البيانات: /var/lib/mysql/
- السجلات: /var/log/mysql/ أو /var/log/mariadb/
استخدم ملفًا مخصصًا مثل /etc/mysql/mariadb.conf.d/50-server.cnf (Debian) أو /etc/my.cnf.d/server.cnf (RHEL) للحفاظ على ضبط الخادم نظيفًا.
الخطوة 4 - ضبط الإعدادات الأساسية (الأداء + السلامة)
يركز الضبط الأكثر فعالية على حدود ذاكرة InnoDB، وعمليات الإدخال/الإخراج، والاتصالات. الأمثلة أدناه مناسبة لتطبيقات الويب النموذجية؛ لذا احرص دائمًا على إجراء اختبارات الأداء وضبطها وفقًا لحجم العمل لديك.
الذاكرة (InnoDB)
- حجم مخزن بيانات InnoDB المؤقت: 60-70% من RAM على خادم قاعدة بيانات مخصص
- innodb_buffer_pool_instances: 1–8 حسب حجم المخزن المؤقت (ابدأ بـ 1 لـ ≤8 جيجابايت)
- حجم ملف سجل innodb: 512 ميجابايت - 2 جيجابايت لأحمال العمل التي تتطلب كتابة مكثفة
# /etc/mysql/conf.d/99-tuning.cnf or /etc/my.cnf.d/99-tuning.cnf
[mysqld]
# Memory
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 1
innodb_log_file_size = 1G
innodb_log_buffer_size = 256M
# General
max_connections = 300
table_open_cache = 8000
thread_cache_size = 100
# Character set
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# Slow query log
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
# Binary logging (required for PITR/replication)
server_id = 1
log_bin = /var/log/mysql/mariadb-bin
binlog_format = ROW
expire_logs_days = 7
# Networking
bind-address = 127.0.0.1
# If you must expose externally, bind to private IP and firewall it:
# bind-address = 10.0.0.10بعد التعديل، أعد تشغيل MariaDB:
sudo systemctl restart mariadb
sudo mariadb -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"السجلات وعمليات الإدخال/الإخراج
- ضع السجلات على وحدة تخزين سريعة وراقبها مساحة القرص
- فعّل سجل الاستعلامات البطيئة للكشف عن الفهارس المفقودة
- استخدم تنسيق سجلات التغييرات الثنائية ROW لضمان الاتساق؛ اضبط قيمة expire_logs_days بناءً على مدة الاحتفاظ بالنسخ الاحتياطية
الاتصالات والمهلات
- max_connections: حدد هذا الحجم بشكل واقعي؛ القيم العالية تزيد من حجم البيانات. RAM استعمال
- wait_timeout: تقليل وقت الانتظار لتطبيقات الويب (على سبيل المثال، 60-120) لتنظيف الاتصالات الخاملة
- حجم ذاكرة التخزين المؤقت للخيوط: يساعد على إعادة استخدام الخيوط في ظل حركة مرور متقطعة
[mysqld]
wait_timeout = 120
interactive_timeout = 120
thread_cache_size = 100تجنب الاعتماد على ذاكرة التخزين المؤقت للاستعلامات القديمة؛ إذ تُبقيها العديد من الإصدارات معطلة بسبب التنازع. ركّز على الفهرسة وتحديد حجم مخزن البيانات المؤقت.
الخطوة 5 - إنشاء قواعد البيانات والمستخدمين وتطبيق مبدأ أقل الامتيازات
أنشئ حسابات مستخدمين منفصلة لكل تطبيق، وامنحهم الصلاحيات اللازمة فقط. لا تستخدم حساب الجذر للتطبيقات.
# Login as root (socket auth)
sudo mariadb
# Create database and user with strong password
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'REPLACE_WITH_LONG_RANDOM_PASSWORD';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
# Test login
mariadb -u appuser -p -e "SHOW GRANTS FOR 'appuser'@'localhost';"الخطوة 6 - تعزيز أمن الشبكة والوصول
- الربط بالمضيف المحلي أو عنوان IP خاص فقط (bind-address)
- استخدم جدار حماية (UFW، firewalld) لتقييد الوصول إلى المنفذ 3306 على الأجهزة الموثوقة.
- تفضل SSH الأنفاق أو الشبكات الافتراضية الخاصة للإدارة عن بعد
- قم بتمكين بروتوكول TLS لاتصالات العميل في حالة تعرضها لشبكات غير موثوقة
# UFW (Ubuntu/Debian)
sudo ufw allow OpenSSH
sudo ufw allow from 10.0.0.0/24 to any port 3306 proto tcp
sudo ufw enable
sudo ufw status
# firewalld (RHEL/AlmaLinux/Rocky)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="3306" accept'
sudo firewall-cmd --reloadبالنسبة لبروتوكول TLS، قم بإنشاء شهادات الخادم وقم بالإشارة إليها في ملف my.cnf (ssl_cert, ssl_key). ثم قم بتطبيقها. SSL لكل مستخدم أو على مستوى العالم.
[mysqld]
ssl_cert = /etc/mysql/ssl/server-cert.pem
ssl_key = /etc/mysql/ssl/server-key.pem
ssl_ca = /etc/mysql/ssl/ca.pem
# Example: require SSL for a user
GRANT SELECT ON appdb.* TO 'appuser'@'10.%' REQUIRE SSL;الخطوة 7 - النسخ الاحتياطية واستعادة البيانات إلى نقطة زمنية محددة (PITR)
استخدم برنامج mariabackup لإجراء نسخ احتياطية فعلية فورية، وبرنامج mysqldump لإجراء نسخ احتياطية منطقية على مستوى المخطط. احتفظ بسجلات التغييرات الثنائية لتطبيق التغييرات.
# Install backup tool (if not included)
sudo apt install -y mariadb-backup || sudo dnf install -y MariaDB-backup
# Full hot backup
sudo mariabackup --backup --target-dir=/backups/full-$(date +%F) --user=root
# Prepare (apply redo logs) and restore test
sudo mariabackup --prepare --target-dir=/backups/full-2026-01-01
# Logical backup (for migrations)
mysqldump --single-transaction --routines --triggers --events appdb | gzip > /backups/appdb-$(date +%F).sql.gzقم بأتمتة عمليات النسخ الاحتياطي باستخدام مؤقتات cron/systemd وتحقق من عمليات الاستعادة بانتظام. خزّن نسخًا احتياطية خارج الموقع للحماية من فقدان الخادم أو برامج الفدية.
الخطوة 8 - المراقبة واستكشاف الأخطاء وإصلاحها
- تفعيل سجل الاستعلامات البطيئة وقم بإصلاحها استعلامات ذات زمن استجابة عالٍ مع فهارس
- استخدم mysqltuner أو mdb_stat_tools للحصول على نتائج سريعة (راجع الاقتراحات بعناية).
- تحقق من مخطط الأداء، ثم استخدم الأمر SHOW ENGINE INNODB STATUS\G للتحقق من وجود أقفال وعمليات إدخال/إخراج.
- تصدير المقاييس إلى بروميثيوس/جرافانا عبر المصدرين لتحليل الاتجاهات على المدى الطويل
# Quick health
sudo mariadb -e "SHOW GLOBAL STATUS LIKE 'Threads_connected';"
sudo mariadb -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"
# Install MySQLTuner (heuristic tool)
sudo apt install -y mysqltuner || sudo dnf install -y mysqltuner
sudo mysqltunerالخطوة 9 - اختياري: إعداد النسخ المتماثل الأساسي
تعمل خاصية النسخ المتماثل على تحسين قابلية التوسع وتوافر البيانات للقراءة. استخدم تسجيل البيانات على مستوى الصفوف وGTID (إذا كان مدعومًا في إصدار MariaDB LTS الذي اخترته) لتبسيط عملية تجاوز الأعطال.
# On primary (ensure binary logging enabled)
[mysqld]
server_id = 1
log_bin = /var/log/mysql/mariadb-bin
binlog_format = ROW
# Create a replication user
CREATE USER 'repl'@'10.%' IDENTIFIED BY 'REPLACE_STRONG_PASSWORD';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.%';
FLUSH PRIVILEGES;
# Get a consistent snapshot
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
# Take a backup now; then UNLOCK TABLES;# On replica
[mysqld]
server_id = 2
relay_log = /var/log/mysql/relay-bin
# Initialize from primary backup, then:
CHANGE MASTER TO
MASTER_HOST='10.0.0.10',
MASTER_USER='repl',
MASTER_PASSWORD='REPLACE_STRONG_PASSWORD',
MASTER_LOG_FILE='mariadb-bin.000123',
MASTER_LOG_POS=456789;
START SLAVE;
SHOW SLAVE STATUS\Gالمخاطر الشائعة وأفضل الممارسات
- لا تعرض المنفذ 3306 للإنترنت؛ استخدم شبكة خاصة وجدران حماية.
- حجم innodb_buffer_pool_size يعتمد على RAM ومراقبة الذاكرة الحرة
- تجنب تجاوز الحد الأقصى للاتصالات؛ استخدم تجميع الاتصالات على مستوى التطبيق.
- حافظ على تحديث الحزم؛ وحدد فترات الصيانة لترقيات الإصدارات الرئيسية.
- اختبر النسخ الاحتياطية والاستعادة كل ثلاثة أشهر؛ تدرب على استعادة النظام بعد وقوع الحدث باستخدام سجلات التغييرات الثنائية.
- قم بتوثيق التغييرات في ملفات التكوين الخاضعة للتحكم في الإصدار واستخدم بيئة الاختبار للتحقق من صحتها.
الأسئلة الشائعة: كيفية تهيئة MariaDB على خادم Linux
أي إصدار من MariaDB يجب أن أستخدمه في عام 2026؟
اختر إصدارًا حديثًا من نظام التشغيل ذي الدعم طويل الأمد (مثل 10.6 أو 10.11 LTS) لضمان استقرار النظام وتحديثات الأمان على المدى البعيد. استخدم مستودع MariaDB الرسمي للبقاء على اطلاع دائم إذا كان نظام التشغيل الخاص بك متأخرًا عن الإصدارات السابقة.
أين يوجد ملف my.cnf الخاص بي على نظام لينكس؟
في أنظمة أوبونتو/ديبيان: الملف /etc/mysql/my.cnf بالإضافة إلى الملفات المضمنة في /etc/mysql/mariadb.conf.d/ و /etc/mysql/conf.d/. في أنظمة RHEL/AlmaLinux/Rocky: الملف /etc/my.cnf بالإضافة إلى الملف /etc/my.cnf.d/. استخدم ملفات مضمنة مثل 99-tuning.cnf لتنظيم التغييرات.
ما هو أفضل حجم لـ innodb_buffer_pool_size؟
بالنسبة لخادم MariaDB مخصص، ابدأ بنسبة 60-70% من الإجمالي RAMعلى سبيل المثال، على 8 جيجابايت RAMاستخدم 5-6 جيجابايت. راقب مساحة التبديل لنظام التشغيل وقاعدة بيانات MariaDB. استخدام الذاكرةثم قم بتحسينها بناءً على حجم العمل ونسب نجاح ذاكرة التخزين المؤقت.
كيف يمكنني تأمين الوصول عن بُعد إلى MariaDB؟
قم بربط MariaDB بعنوان IP خاص، وقم بتقييد المنفذ 3306 باستخدام جدار الحماية، ثم اتصل عبر VPN أو SSH الأنفاق. إذا كان لا بد من كشفها، فقم بفرض بروتوكول TLS وقوائم السماح لعناوين IP، وقم بإنشاء مستخدمين بأقل الامتيازات.
هل أستخدم برنامج mariabackup أم برنامج mysqldump؟
استخدم برنامج mariabackup لإجراء نسخ احتياطية فعلية سريعة ومتسقة واستعادة سريعة للبيانات؛ واستخدم برنامج mysqldump لعمليات النقل المنطقية، وقواعد البيانات الأصغر حجمًا، أو للتحكم في إصدارات المخطط. تستخدم العديد من الفرق كلا البرنامجين: النسخ الاحتياطي الليلي لبرنامج mariabackup بالإضافة إلى النسخ الاحتياطية الدورية لبرنامج mysqldump لضمان قابلية النقل.
خاتمة
أنت الآن تعرف كيفية تهيئة MariaDB على خادم لينكس من الصفر إلى الإنتاج: التثبيت، والتأمين، وضبط ملف my.cnf، manage قم بتقييد وصول المستخدمين، وإنشاء نسخ احتياطية، ومراقبة الأداء. ابدأ بحذر، ثم قِس النتائج، ثم حسّن الأداء باستمرار. مع أساس متين وصيانة منتظمة، سيظل نظام MariaDB سريعًا ومستقرًا وآمنًا في عام 2026 وما بعده.