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 توضیح دادیم. نصب، مدیریت کاربر، عملیات پایگاه داده، پیکربندی دسترسی از راه دور، تنظیم عملکرد و استراتژیهای بکاپگیری را بررسی کردیم. میتوانید سوالات یا نظرات خود را در نظرات زیر برای ما ارسال کنید.