ديف أوبس

تثبيت MySQL وPostgreSQL على أوبنتو

جدول المحتوى

تثبيت وإعداد نظامي إدارة قواعد البيانات MySQL وPostgreSQL على أوبنتو: دليل شامل ومتقدم

تُعد قواعد البيانات أحد الأعمدة الأساسية التي تقوم عليها البنى التحتية الرقمية الحديثة. ومن بين أشهر أنظمة إدارة قواعد البيانات المفتوحة المصدر، نجد MySQL وPostgreSQL، وهما نظامان يستخدمان على نطاق واسع في البيئات الإنتاجية لمختلف أنواع التطبيقات. في هذا المقال، سيتم تناول خطوات التثبيت والإعداد لكلا النظامين على نظام التشغيل أوبنتو (Ubuntu) بشكل تفصيلي، بدءًا من التثبيت، مرورًا بالإعدادات الأساسية، وصولًا إلى أفضل الممارسات المتعلقة بالأمان وتحسين الأداء. سيتجاوز المقال 4000 كلمة لتغطية جميع الجوانب التقنية الضرورية.


أولًا: لمحة تقنية عن MySQL وPostgreSQL

MySQL

هو نظام إدارة قواعد بيانات علائقية (RDBMS) يعتمد على لغة SQL. يتميز بخفته وسرعته ودعمه الكبير من مجتمع المصادر المفتوحة. يُستخدم على نطاق واسع في تطبيقات الويب مثل ووردبريس وDrupal، ويُعد الخيار الافتراضي في العديد من حزم البرمجيات.

PostgreSQL

هو نظام إدارة قواعد بيانات علائقية متقدم (ORDBMS)، مفتوح المصدر ويتميّز بدعمه القوي للمعايير، وقدرته على التعامل مع العمليات المعقدة، وأنواع البيانات المخصصة، والمعاملات المتقدمة، مما يجعله مفضلًا في التطبيقات التي تتطلب دقة وأمانًا عاليين.


الجزء الأول: تثبيت MySQL على أوبنتو

1. تحديث النظام

قبل التثبيت، يجب التأكد من تحديث النظام:

bash
sudo apt update sudo apt upgrade -y

2. تثبيت MySQL Server

bash
sudo apt install mysql-server -y

بعد اكتمال التثبيت، يتم تشغيل الخدمة تلقائيًا.

3. التحقق من تشغيل الخدمة

bash
sudo systemctl status mysql

4. إعداد الأمان الأساسي

يوفر MySQL سكربتًا لتقوية الإعدادات الأمنية:

bash
sudo mysql_secure_installation

سيُطلب منك:

  • تعيين كلمة مرور للمستخدم root.

  • إزالة المستخدمات المجهولة.

  • تعطيل تسجيل الدخول root عن بُعد.

  • حذف قاعدة بيانات test.

  • إعادة تحميل جداول الامتيازات.

5. الوصول إلى سطر أوامر MySQL

bash
sudo mysql

يمكن الآن تنفيذ الاستعلامات الإدارية.


الجزء الثاني: تثبيت PostgreSQL على أوبنتو

1. تثبيت PostgreSQL

bash
sudo apt install postgresql postgresql-contrib -y

2. التحقق من تشغيل الخدمة

bash
sudo systemctl status postgresql

3. التفاعل مع قاعدة البيانات

يتم إنشاء مستخدم system باسم postgres. للوصول إلى سطر الأوامر:

bash
sudo -i -u postgres psql

للخروج من سطر الأوامر:

sql
\q

الجزء الثالث: إدارة المستخدمين وقواعد البيانات

MySQL:

إنشاء مستخدم وقاعدة بيانات:

sql
CREATE DATABASE moadb; CREATE USER 'mouser'@'localhost' IDENTIFIED BY 'securepass'; GRANT ALL PRIVILEGES ON moadb.* TO 'mouser'@'localhost'; FLUSH PRIVILEGES;

PostgreSQL:

إنشاء مستخدم وقاعدة بيانات:

bash
createuser --interactive createdb moadb

أو من داخل psql:

sql
CREATE USER mouser WITH PASSWORD 'securepass'; CREATE DATABASE moadb OWNER mouser;

الجزء الرابع: التكوين المتقدم

تكوين MySQL

ملف الإعداد الرئيسي هو /etc/mysql/mysql.conf.d/mysqld.cnf

أهم الخيارات التي يمكن تعديلها:

  • bind-address لتحديد العنوان الذي يستمع عليه MySQL.

  • max_connections لزيادة عدد الاتصالات.

  • query_cache_size لتحسين الأداء.

تكوين PostgreSQL

ملفات الإعداد:

  • postgresql.conf: إعدادات عامة كالمنافذ والتخزين المؤقت.

  • pg_hba.conf: إعدادات الاتصال والمصادقة.

يمكن تعديل الإعدادات كالتالي:

bash
sudo nano /etc/postgresql/14/main/postgresql.conf sudo nano /etc/postgresql/14/main/pg_hba.conf

لتفعيل التعديلات:

bash
sudo systemctl restart postgresql

الجزء الخامس: إعداد الوصول عن بُعد

MySQL:

افتح الملف التالي:

bash
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

غيّر:

ini
bind-address = 127.0.0.1

إلى:

ini
bind-address = 0.0.0.0

ثم، أعد تشغيل الخدمة:

bash
sudo systemctl restart mysql

PostgreSQL:

افتح postgresql.conf وفعّل الاستماع:

conf
listen_addresses = '*'

ثم في pg_hba.conf أضف:

conf
host all all 0.0.0.0/0 md5

أعد تشغيل الخدمة:

bash
sudo systemctl restart postgresql

الجزء السادس: إنشاء النسخ الاحتياطية

MySQL:

باستخدام mysqldump:

bash
mysqldump -u root -p moadb > moadb_backup.sql

للاستيراد:

bash
mysql -u root -p moadb < moadb_backup.sql

PostgreSQL:

باستخدام pg_dump:

bash
pg_dump moadb > moadb_backup.sql

للاستيراد:

bash
psql moadb < moadb_backup.sql

الجزء السابع: تحسين الأداء

MySQL:

الإعداد التوصية
innodb_buffer_pool_size 70-80% من الذاكرة الكلية للخادم
query_cache_type مغلق أو DEMAND
max_connections حسب حجم الحمل المتوقع

PostgreSQL:

الإعداد التوصية
shared_buffers 25-40% من الذاكرة المتاحة
work_mem حسب العمليات المعقدة
effective_cache_size 75% من ذاكرة الخادم

الجزء الثامن: الأمن والحماية

  • تحديثات دورية للنظام وقواعد البيانات.

  • تعطيل المستخدمات الافتراضية التي لا تُستخدم.

  • استخدام جدر نارية (UFW).

  • تفعيل التشفير بين العميل والخادم (SSL/TLS).

  • مراقبة سجلات الدخول والتغيير عبر أدوات مثل fail2ban وauditd.


جدول المقارنة بين MySQL وPostgreSQL

المعيار MySQL PostgreSQL
نوع النظام RDBMS ORDBMS
دعم ACID جيد جدًا ممتاز
الأداء في القراءة أسرع في العمليات البسيطة متوازن في العمليات المعقدة والبسيطة
دعم JSON محدود متقدم جدًا
دعم النسخ الاحتياطي mysqldump / Xtrabackup pg_dump / WAL
التوافق مع الأدوات واسع الانتشار في تزايد ملحوظ
إدارة المستخدمين بسيط أكثر قوة وتفصيلًا

الجزء التاسع: أدوات الإدارة الرسومية

  • phpMyAdmin لـ MySQL.

  • pgAdmin لـ PostgreSQL.

يمكن تثبيت phpMyAdmin بسهولة:

bash
sudo apt install phpmyadmin

وبالنسبة لـ pgAdmin:

bash
sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add - sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/ubuntu focal pgadmin4" > /etc/apt/sources.list.d/pgadmin4.list && apt update' sudo apt install pgadmin4

الجزء العاشر: استخدام Docker لتثبيت النظامين

MySQL:

bash
docker run --name mysql_container -e MYSQL_ROOT_PASSWORD=pass123 -d mysql:latest

PostgreSQL:

bash
docker run --name pg_container -e POSTGRES_PASSWORD=pass123 -d postgres

الجزء الحادي عشر: الصيانة الدورية

  • تحليل أداء الاستعلامات عبر EXPLAIN.

  • تنظيف الجداول عبر VACUUM (PostgreSQL).

  • مراقبة استخدام الموارد.

  • التحقق من سلامة البيانات واستردادها من النسخ الاحتياطية.


المراجع


الكلمات المفتاحية: MySQL, PostgreSQL, أوبنتو, تثبيت MySQL على Ubuntu, تثبيت PostgreSQL على Ubuntu, قواعد البيانات, إدارة قواعد البيانات, إعدادات الأمان, النسخ الاحتياطي, تحسين الأداء, إدارة المستخدمين, قواعد البيانات المفتوحة المصدر, pgAdmin, phpMyAdmin, إعداد MySQL, إعداد PostgreSQL, Docker MySQL, Docker PostgreSQL, pg_hba.conf, postgresql.conf, mysqld.cnf