انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

دليل تثبيت PostgreSQL وإدارته الأساسية

تثبيت PostgreSQL على Ubuntu/Debian وRHEL/CentOS، إنشاء المستخدمين وقواعد البيانات، أوامر SQL الأساسية، إعداد الاتصال عن بُعد واستراتيجيات النسخ الاحتياطي. دليل خطوة بخطوة.

وقت القراءة: 15 دقيقة قاعدة البيانات
postgresqlقاعدة بياناتتثبيتubuntucentossqlنسخ احتياطيlinux
الكاتب
REXE Teknoloji Network & Security Team
المحرر
REXE Teknoloji Technical Editorial
أول نشر
آخر تحديث

دليل تثبيت PostgreSQL وإدارته الأساسية

يُعدّ PostgreSQL أحد أقوى أنظمة إدارة قواعد البيانات العلائقية مفتوحة المصدر في العالم. بفضل توافقه مع معايير ACID وأنواع البيانات المتقدمة ودعم JSON وقابلية التوسع القوية، يغطي نطاقاً واسعاً من حالات الاستخدام، من تطبيقات المؤسسات إلى المشاريع الصغيرة. يتناول هذا الدليل تثبيت PostgreSQL وإدارته الأساسية وتهيئته.

التثبيت على Ubuntu/Debian

التثبيت من مستودع الحزم

على أنظمة Ubuntu وDebian، يمكن تثبيت PostgreSQL من المستودعات الرسمية:

hljs bash
# تحديث قائمة الحزم
apt update

# تثبيت PostgreSQL
apt install -y postgresql postgresql-contrib

# التحقق من حالة الخدمة
systemctl status postgresql

# تفعيل التشغيل التلقائي
systemctl enable postgresql

استخدام المستودع الرسمي لـ PostgreSQL

للحصول على إصدار أحدث، يمكنك إضافة المستودع الرسمي لـ PostgreSQL:

hljs bash
# تثبيت الأدوات المطلوبة
apt install -y curl ca-certificates

# إضافة مفتاح توقيع PostgreSQL
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

# إضافة المستودع
echo 'deb https://apt.postgresql.org/pub/repos/apt '$(lsb_release -cs)'-pgdg main' > /etc/apt/sources.list.d/pgdg.list

# التحديث والتثبيت
apt update
apt install -y postgresql-16

التثبيت على RHEL/CentOS/AlmaLinux

hljs bash
# إضافة المستودع الرسمي لـ PostgreSQL
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# تعطيل وحدة PostgreSQL المدمجة
dnf -qy module disable postgresql

# تثبيت PostgreSQL 16
dnf install -y postgresql16-server postgresql16-contrib

# تهيئة قاعدة البيانات
/usr/pgsql-16/bin/postgresql-16-setup initdb

# تشغيل الخدمة وتفعيلها
systemctl enable --now postgresql-16

# التحقق من حالة الخدمة
systemctl status postgresql-16

التحقق من إصدار PostgreSQL

hljs bash
psql --version
# الإخراج: psql (PostgreSQL) 16.x

# معلومات الخدمة
psql -U postgres -c 'SELECT version();'

التبديل إلى مستخدم postgres والاتصال

أثناء التثبيت، يُنشأ مستخدم النظام postgres. للاتصال بقاعدة البيانات:

hljs bash
# التبديل إلى مستخدم النظام postgres
su - postgres

# الاتصال بوحدة تحكم PostgreSQL
psql

# الاتصال مباشرة من root
sudo -u postgres psql

# الاتصال بقاعدة بيانات محددة
sudo -u postgres psql -d mydb

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

إنشاء مستخدم جديد

hljs sql
-- في وحدة تحكم PostgreSQL
-- إنشاء مستخدم جديد
CREATE USER appuser WITH PASSWORD 'كلمةمرورقوية123!';

-- إنشاء مستخدم خارق (استخدم بحذر)
CREATE USER adminuser WITH PASSWORD 'كلمةمرورالمدير!' SUPERUSER;

-- عرض قائمة المستخدمين
\du

-- تغيير كلمة مرور المستخدم
ALTER USER appuser WITH PASSWORD 'كلمةمرورجديدة456!';

-- منح صلاحية إنشاء قواعد البيانات
ALTER USER appuser CREATEDB;

إنشاء قاعدة بيانات ومنح الصلاحيات

hljs sql
-- إنشاء قاعدة بيانات
CREATE DATABASE myapp OWNER appuser ENCODING 'UTF8' LC_COLLATE 'ar_SA.UTF-8' LC_CTYPE 'ar_SA.UTF-8' TEMPLATE template0;

-- عرض قائمة قواعد البيانات
\l

-- الاتصال بقاعدة بيانات
\c myapp

-- منح صلاحيات كاملة للمستخدم
GRANT ALL PRIVILEGES ON DATABASE myapp TO appuser;

-- صلاحية المخطط (PostgreSQL 15+)
GRANT ALL ON SCHEMA public TO appuser;

-- حذف قاعدة بيانات
DROP DATABASE qaedat_qadima;

أوامر SQL الأساسية

hljs sql
-- إنشاء جدول
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR(50) NOT NULL UNIQUE,
  email VARCHAR(100) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- إدراج بيانات
INSERT INTO users (username, email) VALUES ('ahmed', 'ahmed@example.com');

-- الاستعلام عن البيانات
SELECT * FROM users;
SELECT username, email FROM users WHERE id = 1;

-- تحديث البيانات
UPDATE users SET email = 'jadid@example.com' WHERE id = 1;

-- حذف البيانات
DELETE FROM users WHERE id = 5;

-- عرض قائمة الجداول
\dt

-- عرض هيكل الجدول
\d users

-- إنشاء فهرس
CREATE INDEX idx_users_email ON users(email);

تهيئة الاتصال عن بُعد

بشكل افتراضي، يقبل PostgreSQL الاتصالات من localhost فقط. لتمكين الوصول عن بُعد، تحتاج إلى تعديل ملفين.

1. تعديل postgresql.conf

hljs bash
# البحث عن موقع ملف التهيئة
sudo -u postgres psql -c 'SHOW config_file;'

# التعديل
nano /etc/postgresql/16/main/postgresql.conf
hljs ini
# تغيير سطر listen_addresses
listen_addresses = '*'

# المنفذ (الافتراضي 5432)
port = 5432

2. تعديل pg_hba.conf

hljs bash
nano /etc/postgresql/16/main/pg_hba.conf
# إضافة سطر للاتصالات عن بُعد (في نهاية الملف)
# TYPE  DATABASE  USER      ADDRESS         METHOD
host    myapp     appuser   192.168.1.0/24  scram-sha-256
host    all       all       0.0.0.0/0       scram-sha-256

3. إعادة تشغيل الخدمة وتهيئة جدار الحماية

hljs bash
# إعادة تشغيل الخدمة
systemctl restart postgresql

# فتح المنفذ باستخدام UFW
ufw allow 5432/tcp

# باستخدام iptables
iptables -A INPUT -p tcp --dport 5432 -j ACCEPT

تعريض منفذ PostgreSQL (5432) للإنترنت يُشكّل خطراً أمنياً. استخدم نفق SSH أو VPN كلما أمكن. إذا كان الوصول عن بُعد ضرورياً، قيّده بعناوين IP محددة.

النسخ الاحتياطي والاستعادة

النسخ الاحتياطي باستخدام pg_dump

hljs bash
# نسخ احتياطي لقاعدة بيانات واحدة
pg_dump -U postgres myapp > myapp_backup.sql

# تنسيق مضغوط (استعادة أسرع)
pg_dump -U postgres -Fc myapp > myapp_backup.dump

# نسخ احتياطي لجميع قواعد البيانات
pg_dumpall -U postgres > all_databases.sql

# نسخ احتياطي من خادم بعيد
pg_dump -h 192.168.1.100 -U postgres myapp > myapp_remote.sql

الاستعادة من النسخة الاحتياطية

hljs bash
# الاستعادة من تنسيق SQL
psql -U postgres myapp < myapp_backup.sql

# الاستعادة من التنسيق المضغوط
pg_restore -U postgres -d myapp myapp_backup.dump

# استعادة جميع قواعد البيانات
psql -U postgres < all_databases.sql

النسخ الاحتياطي التلقائي باستخدام Cron

hljs bash
# تعديل crontab
crontab -e

# أخذ نسخة احتياطية كل ليلة في 02:00
0 2 * * * pg_dump -U postgres myapp | gzip > /backup/myapp_$(date +\%Y\%m\%d).sql.gz

# حذف النسخ الاحتياطية الأقدم من 30 يوماً
0 3 * * * find /backup -name 'myapp_*.sql.gz' -mtime +30 -delete

إدارة الخدمة

hljs bash
# تشغيل الخدمة
systemctl start postgresql

# إيقاف الخدمة
systemctl stop postgresql

# إعادة تشغيل الخدمة
systemctl restart postgresql

# إعادة تحميل التهيئة (دون إعادة تشغيل)
systemctl reload postgresql

# عرض السجلات
journalctl -u postgresql -f
tail -f /var/log/postgresql/postgresql-16-main.log

الخلاصة

PostgreSQL نظام إدارة قواعد بيانات موثوق وعالي الأداء. بعد التثبيت، لا تهمل تهيئة الأمان، وقم بإجراء نسخ احتياطية منتظمة، وتأكد من تهيئة أساليب المصادقة بشكل صحيح للوصول عن بُعد. يعمل PostgreSQL بسلاسة على خوادم REXE ويوفر أداءً موثوقاً تحت حركة المرور العالية.

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

ما الفرق الرئيسي بين PostgreSQL وMySQL؟

يوفر PostgreSQL توافقاً كاملاً مع ACID وأنواع بيانات متقدمة (JSON وJSONB والمصفوفات وhstore) ووظائف النوافذ وقابلية توسع قوية. يوفر MySQL عموماً تثبيتاً وإدارة أبسط، بينما يتفوق PostgreSQL في الاستعلامات المعقدة ومجموعات البيانات الكبيرة. يُوصى بـ PostgreSQL للمشاريع الجديدة.

كيف أغير كلمة مرور مستخدم postgres؟

اتصل بوحدة تحكم PostgreSQL باستخدام sudo -u postgres psql، ثم نفّذ ALTER USER postgres WITH PASSWORD 'كلمةمرورجديدة'; لتغيير كلمة مرور مستخدم النظام، استخدم sudo passwd postgres.

لا أستطيع إنشاء اتصال عن بُعد. ماذا يجب أن أتحقق؟

تحقق من ثلاثة أشياء: 1) تأكد من تعيين listen_addresses = '*' في postgresql.conf، 2) تحقق من إضافة سطر host لعنوان IP المعني في pg_hba.conf، 3) تأكد من فتح المنفذ 5432 في جدار الحماية (ufw status أو iptables -L). تذكر إعادة تشغيل الخدمة بعد إجراء التغييرات.

ما مدى موثوقية النسخة الاحتياطية المأخوذة بـ pg_dump؟

يأخذ pg_dump لقطة متسقة وهو موثوق جداً. للقواعد الكبيرة، استخدم -Fc (التنسيق المخصص)؛ يدعم هذا التنسيق الاستعادة المتوازية وينتج أحجام ملفات أصغر. للأنظمة الحيوية، فكّر أيضاً في أساليب نسخ احتياطي أكثر تقدماً مثل أرشفة WAL أو النسخ المتدفق.

ما المنفذ الذي يستخدمه PostgreSQL وكيف أغيره؟

يستخدم PostgreSQL المنفذ 5432 افتراضياً. لتغييره، حدّث السطر port = 5432 في /etc/postgresql/16/main/postgresql.conf برقم المنفذ المطلوب وأعد تشغيل الخدمة. لا تنسَ تحديث pg_hba.conf وسلاسل الاتصال أيضاً.

هل يمكن تشغيل إصدارات متعددة من PostgreSQL على نفس الخادم؟

نعم، يمكن لكل إصدار العمل على منفذ مختلف. على سبيل المثال، يمكن لـ PostgreSQL 14 العمل على المنفذ الافتراضي 5432 وPostgreSQL 16 على المنفذ 5433. لكل إصدار دليل بيانات خاص به ووحدة خدمة خاصة. استخدم الأمر pg_lsclusters لعرض جميع المجموعات الموجودة.

مقالات ذات صلة

تثبيت MySQL و MariaDB: دليل الإدارة الأساسية

تثبيت MySQL و MariaDB على Linux خطوة بخطوة، mysql_secure_installation، إنشاء قواعد البيانات والمستخدمين، أوامر SQL الأساسية، تكوين الوصول عن بُعد وضبط الأداء.

14 dk
mysqlmariadbقاعدة البيانات

تثبيت phpMyAdmin والوصول الآمن

دليل خطوة بخطوة لتثبيت phpMyAdmin على Apache وNginx، وإعداد SSL، وإدارة المستخدمين، وتقييد IP، وتعزيز الأمان.

16 دقيقة
phpmyadminmysqlmariadb
حركة الشبكةالداخل Gbpsالخارج Gbps