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

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

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

وقت القراءة: 15 دقيقة قاعدة البيانات
postgresqlقاعدة بياناتتثبيتubuntucentossqlنسخ احتياطيlinux

جدول المحتويات

دليل تثبيت 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 ويوفر أداءً موثوقاً تحت حركة المرور العالية.