آموزش نصب PostgreSQL 18 در اوبونتو ۲۴.۰۴

آموزش نصب PostgreSQL 18

PostgreSQL (به اختصار Postgres) یک سیستم پایگاه داده relational-document متن‌باز، قدرتمند، پیشرفته، با کارایی بالا و پایدار است که زبان SQL را گسترش می‌دهد و شامل طیف گسترده‌ای از ویژگی‌ها برای ذخیره‌سازی و مدیریت ایمن داده‌ها است. این سیستم برای مدیریت حجم زیاد و پیچیده داده‌ها و راه‌اندازی محیط‌های سطح سازمانی و مقاوم در برابر خطا، کارآمد، قابل اعتماد و مقیاس‌پذیر است، در حالی که یکپارچگی بالای داده‌ها را تضمین می‌کند.
Postgres (پُستگْرِس‌کیواِل ) همچنین با ویژگی‌هایی مانند نمایه‌سازی پیشرفته (advanced indexing)، جستجوی متن کامل (full-text search)، بسیار توسعه‌پذیر و دارای APIهایی است تا بتوانید راه‌حل‌های خود را برای حل چالش‌های ذخیره‌سازی داده‌های توسعه دهید.

در این مطلب، آموزش نصب PostgreSQL 18 (که در ۲۵ سپتامبر ۲۰۲۵ منتشر شد) را روی یک سرور Ubuntu 24.04 توضیح خواهیم داد و روش‌های ضروری برای استفاده موثر از آن را یاد خواهیم گرفت.

آنچه در این مطلب خواهید خواند

نحوه نصب PostgreSQL در Ubuntu 24.04

PostgreSQL به طور پیشفرض با تمام نسخه‌های اوبونتو از پیش بسته‌بندی شده است. با این حال، اوبونتو شامل یک اسنپ‌شات خاص از PostgreSQL است که برای کل چرخه حیات آن نسخه اوبونتو ثابت می‌ماند.
اگر می‌خواهید به نسخه‌های جدیدتر PostgreSQL دسترسی داشته باشید، می‌توانید از اسکریپت پیکربندی مخزن خودکار زیر استفاده کنید که به طور خودکار مخزن رسمی PostgreSQL Apt را راه‌اندازی می‌کند.

sudo apt install -y postgresql-common ca-certificates
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh

ابتدا لیست بسته‌ها را به‌روزرسانی و PostgreSQL را نصب کنید (آخرین نسخه تا به امروز PostgreSQL 18 است):

sudo apt update
sudo apt install postgresql-18 postgresql-contrib-18

نصب pgAdmin 4 برای مدیریت PostgreSQL

اگر رابط گرافیکی را برای مدیریت پایگاه‌های داده PostgreSQL خود ترجیح می‌دهید، می‌توانید pgAdmin 4، ابزار رسمی مدیریت PostgreSQL را نصب نمائید که به شما امکان می‌دهد پایگاه‌های داده، کاربران، کوئری‌ها و موارد دیگر را از یک داشبورد مبتنی بر وب مدیریت کنید.

در اوبونتو ۲۴.۰۴، در مخازن پیشفرض، pgAdmin 4 موجود نیست، بنابراین ما از مخزن رسمی pgAdmin استفاده خواهیم کرد.

sudo apt install -y curl ca-certificates gnupg
curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /usr/share/keyrings/packages-pgadmin-org.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

پس از اضافه شدن مخزن pgAdmin، می‌توانید pgAdmin 4 را مطابق راهنمای زیر نصب کنید.

# Install for both desktop and web modes
sudo apt install pgadmin4

# Install for desktop mode only
sudo apt install pgadmin4-desktop

# Install for web mode only
sudo apt install pgadmin4-web

# Configure the webserver, if you installed pgadmin4-web:
sudo /usr/pgadmin4/bin/setup-web.sh

پس از نصب، سرویس PostgreSQL باید به طور خودکار شروع به کار کند و می‌توانید با اجرای دستور زیر وضعیت آن را تایید کنید:

sudo systemctl status postgresql

برای فعال کردن شروع PostgreSQL هنگام بوت (اگر قبلا فعال نشده است):

sudo systemctl enable postgresql

پس از اجرای این دستور، می‌توانید pgAdmin را در مرورگر خود در آدرس زیر باز کنید:

https://127.0.0.1/pgadmin4

نحوه استفاده از نقش‌ها و پایگاه‌های داده PostgreSQL

در PostgreSQL، احراز هویت کلاینت توسط فایل پیکربندی etc/postgresql/18/main/pg_hba.conf/ کنترل می‌شود (شماره نسخه ممکن است بسته به نصب شما متفاوت باشد).

روش احراز هویت پیشفرض برای مدیر پایگاه داده peer است، به این معنی که نام کاربری سیستم عامل کلاینت را دریافت و بررسی می‌کند که آیا با نام کاربری پایگاه داده درخواستی مطابقت دارد یا خیر تا امکان دسترسی به اتصالات محلی فراهم شود.

در طول فرآیند نصب، یک حساب کاربری سیستم به نام postgres بدون رمز عبور ایجاد شد که نام کاربری پیشفرض مدیر پایگاه داده نیز هست.

sudo nano /etc/postgresql/18/main/pg_hba.conf

درک نقش‌های PostgreSQL

در PostgreSQL، مدیریت مجوز دسترسی به پایگاه داده از طریق نقش‌ها انجام می‌شود. یک نقش می‌تواند به عنوان یک کاربر پایگاه داده یا گروهی از کاربران پایگاه داده در نظر گرفته شود، بسته به نحوه تنظیم نقش.

نقش پیشفرض postgres است. نکته مهم این است که نقش‌های پایگاه داده از نظر مفهومی کاملا به کاربران سیستم عامل متصل نیستند، اما در واقع ممکن است به هم مرتبط باشند (به‌ویژه برای اهداف احراز هویت).
نقش‌ها می‌توانند:

  • اشیاء پایگاه داده (جداول، نماها، توابع و غیره) را در اختیار داشته باشند.
  • امتیازات مربوط به آن اشیاء را به نقش‌های دیگر اختصاص دهند.
  • عضویت در یک نقش را به نقش دیگری اعطا کنند (وراثت نقش).

خرید VPS لینوکس با دسترسی کامل SSH و منابع اختصاصی، مناسب برای برنامه‌نویسان، توسعه‌دهندگان و مدیران سایت در پارسدو فراهم است.

رمزهای عبور رمزگذاری شده را برای نقش‌های PostgreSQL فعال کنید

برای پیکربندی نقش‌ها برای استفاده از رمزهای عبور رمزگذاری شده به جای احراز هویت همتا، باید فایل pg_hba.conf را تغییر دهید. روش احراز هویت را از همتا به scram-sha-256  یا md5 برای احراز هویت رمز عبور تغییر دهید.

sudo nano /etc/postgresql/18/main/pg_hba.conf

خطوطی را که شبیه به این هستند پیدا کنید:

# TYPE DATABASE USER ADDRESS METHOD
local all all peer

و به: تغییر دهید

# TYPE DATABASE USER ADDRESS METHOD
local all postgres peer
local all all scram-sha-256

این کار احراز هویت peer را برای کاربر postgres حفظ می‌کند اما برای سایر کاربران به رمز عبور نیاز دارد.

سپس سرویس PostgreSQL را برای اعمال تغییرات ریستارت کنید:

sudo systemctl restart postgresql

نحوه استفاده از PostgreSQL در اوبونتو

پس از راه‌اندازی همه چیز، می‌توانید با دستور زیر به حساب سیستم postgres دسترسی پیدا کنید، که در آن علامت -i به sudo می‌گوید که پوسته مشخص شده توسط ورودی پایگاه داده رمز عبور کاربر هدف را به عنوان پوسته ورود به سیستم اجرا کند.

sudo -i -u postgres
psql # to launch the postgres shell program

برای دسترسی مستقیم به پوسته postgres، بدون دسترسی اولیه به حساب کاربری postgres، دستور زیر را اجرا کنید:

sudo -u postgres psql

می‌توانید با تایپ \q یا فشار دادن Ctrl+D از پوسته postgres خارج شوید.

ایجاد نقش‌های پایگاه داده PostgreSQL

با استفاده از دستور زیر، یک نقش کاربری جدید ایجاد کنید:

CREATE ROLE parsdev;

برای ایجاد نقشی با ویژگی LOGIN (نقش‌های دارای ویژگی LOGIN را می‌توان همانند کاربران پایگاه داده در نظر گرفت):

CREATE ROLE parsdev LOGIN;

یا از دستور CREATE USER استفاده کنید که به طور پیشفرض تابع ورود را در نظر می‌گیرد:

CREATE USER parsdev;

ایجاد یک نقش با رمز عبور

همچنین می‌توان یک نقش را با رمز عبور ایجاد کرد، که اگر روش احراز هویت کلاینت را طوری پیکربندی کرده‌اید که نیاز به رمزهای عبور رمزگذاری شده داشته باشد، ضروری است:

CREATE ROLE parsdev WITH LOGIN PASSWORD 'secure_password_here';

یا با استفاده از سینتکس CREATE USER:

CREATE USER parsdev WITH PASSWORD 'secure_password_here';

ایجاد یک نقش با امتیازات اضافی

می‌توانید نقشی با امتیازات کاربر ارشد ایجاد کنید (با دقت استفاده کنید):

CREATE ROLE admin WITH LOGIN PASSWORD 'admin_password' SUPERUSER;

یا نقشی ایجاد کنید که بتواند پایگاه‌های داده ایجاد کند:

CREATE ROLE developer WITH LOGIN PASSWORD 'dev_password' CREATEDB;

فهرست کردن نقش‌های موجود در پایگاه داده PostgreSQL

برای فهرست کردن نقش‌های کاربری موجود، از هر یک از این دستورات استفاده کنید:

\du -- shows actual users with details

یا:

SELECT rolname FROM pg_roles;

برای مشاهده اطلاعات دقیق‌تر:

\du+

اصلاح نقش‌های پایگاه داده PostgreSQL

برای تغییر رمز عبور یک نقش:

ALTER ROLE parsdev WITH PASSWORD 'new_password';

برای اعطای امتیازات superuser به یک نقش موجود:

ALTER ROLE parsdev WITH SUPERUSER;

برای لغو امتیازات superuser:

ALTER ROLE parsdev WITH NOSUPERUSER;

حذف یک نقش پایگاه داده PostgreSQL

برای حذف یک نقش کاربری موجود، از دستور DROP ROLE استفاده کنید:

DROP ROLE parsdev;

توجه: شما نمی‌توانید نقشی را که مالک اشیاء پایگاه داده است، حذف کنید، ابتدا باید آن اشیاء را دوباره اختصاص دهید یا حذف کنید.

ایجاد یک پایگاه داده PostgreSQL

پس از ایجاد یک نقش با نام خاص (به عنوان مثال کاربر parsdev)، می‌توانید یک پایگاه داده ایجاد کنید که توسط آن نقش مدیریت شود:

CREATE DATABASE parsdev;

برای ایجاد یک پایگاه داده متعلق به یک نقش خاص:

CREATE DATABASE parsdev OWNER parsdev;

برای ایجاد یک پایگاه داده با کدگذاری خاص:

CREATE DATABASE parsdev ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' OWNER parsdev;

اعطای امتیازات به یک نقش

پس از ایجاد پایگاه داده، تمام امتیازات را به نقش اعطا کنید:

GRANT ALL PRIVILEGES ON DATABASE parsdev TO parsdev;

اکنون برای مدیریت پایگاه داده parsdev، به پوسته postgres به عنوان نقش parsdev دسترسی پیدا کنید:

psql -U parsdev -d parsdev

اگر از شما رمز عبور خواسته شد، رمز عبوری را که برای نقش تعیین کرده‌اید وارد کنید.

ایجاد یک جدول PostgreSQL

ما یک جدول آزمایشی به نام نویسندگان ایجاد خواهیم کرد که اطلاعات مربوط به نویسندگان parsdev.com را ذخیره می‌کند:

CREATE TABLE authors (
code SERIAL PRIMARY KEY,
name VARCHAR(40) NOT NULL,
city VARCHAR(40) NOT NULL,
joined_on DATE NOT NULL
);

توجه: ما از SERIAL برای کلید اصلی استفاده می‌کنیم که به طور خودکار اعداد متوالی تولید می‌کند، که عملی‌تر از اختصاص دستی کدها است.

درج داده در جدول PostgreSQL

پس از ایجاد جدول، آن را با برخی داده‌ها پر کنید:

INSERT INTO authors (name, city, joined_on) VALUES 
('Hasan M', 'Rasht', '2012-08-25'),
('Ali A', 'Tehran', '2014-04-20'),
('Soma N', 'Tabriz', '2015-06-20');

پرس و جو در داده‌ها از جدول PostgreSQL

برای مشاهده داده‌های ذخیره شده در یک جدول، دستور SELECT را اجرا کنید:

SELECT * FROM authors;

برای ستون‌های خاص:

SELECT name, city FROM authors;

با فیلتر کردن:

SELECT * FROM authors WHERE city = 'Rasht';

با مرتب‌سازی:

SELECT * FROM authors ORDER BY joined_on DESC;

به‌روزرسانی داده‌ها در جدول PostgreSQL

برای تغییر داده‌های موجود:

UPDATE authors SET city = 'Rasht' WHERE name = 'Hasan M';

حذف داده‌ها از جدول PostgreSQL

برای حذف ردیف‌های خاص:

DELETE FROM authors WHERE name = 'Hasan M';

لیست جداول پایگاه داده PostgreSQL

شما می‌توانید تمام جداول موجود در پایگاه داده فعلی را با استفاده از موارد زیر فهرست کنید:

\dt

برای اطلاعات بیشتر:

\dt+

برای مشاهده ساختار جدول:

authors

تغییر ساختار جدول PostgreSQL

برای اضافه کردن یک ستون جدید به یک جدول موجود:

ALTER TABLE authors ADD COLUMN email VARCHAR(100);

برای حذف یک ستون:

ALTER TABLE authors DROP COLUMN email;

برای تغییر نام یک ستون:

ALTER TABLE authors RENAME COLUMN code TO author_id;

حذف/حذف یک جدول PostgreSQL

برای حذف یک جدول در پایگاه داده فعلی:

DROP TABLE authors;

برای حذف با آبشار (حذف اشیاء وابسته):

DROP TABLE authors CASCADE;

لیست همه پایگاه‌های داده PostgreSQL

برای فهرست کردن همه پایگاه‌های داده، از هر یک از دستورات زیر استفاده کنید:

SELECT datname FROM pg_database;

یا برای توضیحات دقیق‌تر:

\list

یا خلاصه:

\l

حذف/حذف یک پایگاه داده PostgreSQL

اگر می‌خواهید یک پایگاه داده را حذف کنید:

DROP DATABASE parsdev;

هشدار: این کار تمام داده‌های موجود در پایگاه داده را برای همیشه حذف می‌کند.

به یک پایگاه داده PostgreSQL دیگر بروید
می‌توانید به راحتی از یک پایگاه داده به پایگاه داده دیگر بروید:

\connect database_name

یا خلاصه:

\c database_name

پیکربندی PostgreSQL برای دسترسی از راه دور

به طور پیش‌فرض، PostgreSQL فقط اتصالات را از localhost می‌پذیرد.
برای اجازه دادن به اتصالات از راه دور، باید فایل postgresql.conf را ویرایش کنید.

sudo nano /etc/postgresql/18/main/postgresql.conf

خط زیر را پیدا کنید:

#listen_addresses = 'localhost'

آن را به:

listen_addresses = '*'

بعد، فایل pg_hba.conf را ویرایش کنید.

sudo nano /etc/postgresql/18/main/pg_hba.conf

خطی برای اجازه دادن به اتصالات از شبکه خود اضافه کنید (۱۹۲.۱۶۸.۱.۰/۲۴ را با شبکه خود جایگزین کنید):

# TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.1.0/24 scram-sha-256

یا برای اجازه دادن از هر IP (امنیت کمتر):

host all all 0.0.0.0/0 scram-sha-256

اجازه دادن به PostgreSQL از طریق فایروال:

sudo ufw allow 5432/tcp

در نهایت، PostgreSQL را ریستارت کنید.

sudo systemctl restart postgresql

تنظیم اولیه عملکرد PostgreSQL

برای عملکرد بهتر در اوبونتو ۲۴.۰۴، تنظیم این تنظیمات را در postgresql.conf در نظر بگیرید:

sudo nano /etc/postgresql/18/main/postgresql.conf

تغییرات پیشنهادی (بر اساس رم سرور خود تنظیم کنید):

shared_buffers = 256MB # 25% of RAM
effective_cache_size = 1GB # 50-75% of RAM
maintenance_work_mem = 64MB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 4MB

پس از تغییرات، PostgreSQL را ریستارت کنید:

sudo systemctl restart postgresql

 

بکاپ و بازیابی پایگاه‌های داده PostgreSQL

برای بکاپ از یک پایگاه داده واحد:

pg_dump -U postgres parsdev > parsdev_backup.sql

برای بکاپ‌گیری از همه پایگاه‌های داده.

pg_dumpall -U postgres > all_databases_backup.sql

برای بازیابی یک پایگاه داده.

psql -U postgres parsdev < parsdev_backup.sql

جمع‌بندی

در این مطلب، آموزش نصب PostgreSQL 18 را در اوبونتو ۲۴.۰۴ LTS توضیح دادیم. نصب، مدیریت کاربر، عملیات پایگاه داده، پیکربندی دسترسی از راه دور، تنظیم عملکرد و استراتژی‌های بکاپ‌گیری را بررسی کردیم. می‌توانید سوالات یا نظرات خود را در نظرات زیر برای ما ارسال کنید.

نوشتن نظر

نوشتن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *