تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

نحوه نصب و استفاده از PostgreSQL در سرور مجازی اوبونتو 22.04


۲۵ فروردین ۱۴۰۴

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

PostgreSQL، یا Postgres، یک سیستم مدیریت پایگاه داده رابطه‌ای است که پیاده‌سازی از زبان پرس‌وجوی SQL را ارائه می‌دهد. این سیستم مطابق با استانداردها بوده و دارای ویژگی‌های پیشرفته‌‌ای مانند تراکنش‌های قابل اعتماد و هم‌زمانی بدون قفل خواندن است.

این مقاله نحوه نصب Postgres روی یک سرور Ubuntu 22.04 را نشان می‌دهد. همچنین، برخی دستورالعمل‌ها برای مدیریت کلی پایگاه داده را ارائه می‌کند.

در ادامه خواهید خواند:

  • پیش نیاز
  • نصب PostgreSQL
  • استفاده از نقش‌ها و پایگاه‌های داده در PostgreSQL
  • ایجاد یک نقش جدید
  • ایجاد یک پایگاه داده جدید
  • باز کردن محیط Postgres با نقش جدید
  • ایجاد و حذف جداول
  • افزودن، جستجو و حذف داده‌ها در یک جدول
  • افزودن و حذف ستون‌ها از یک جدول
  • به‌روزرسانی داده‌ها در یک جدول
  • جمع بندی

پیش نیاز

برای دنبال کردن این آموزش، شما به یک سرور Ubuntu 22.04 نیاز دارید که با دنبال کردن راهنمای “نحوه راه‌اندازی اولیه سرور مجازی با اوبونتو Ubuntu” ما پیکربندی شده باشد. پس از تکمیل این آموزش پیش‌نیاز، سرور شما باید یک کاربر غیر ریشه‌ای با دسترسی sudo و یک فایروال پایه داشته باشد.

PostgreSQL در سرور مجازی اوبونتو

نصب PostgreSQL

مخازن پیش‌فرض اوبونتو شامل بسته‌های Postgres هستند، بنابراین می‌توانید این بسته‌ها را با استفاده از سیستم مدیریت بسته apt نصب کنید.

اگر اخیرا این کار را انجام نداده‌اید، فهرست بسته‌های محلی سرور خود را به‌روزرسانی کنید.

sudo apt update

سپس، بسته Postgres را همراه با بسته -contrib که برخی از ابزارها و قابلیت‌های اضافی را اضافه می‌کند نصب کنید.

sudo apt install postgresql postgresql-contrib

اطمینان حاصل کنید که سرور در حال اجرا است، با استفاده از دستور systemctl start این کار را انجام دهید.

sudo systemctl start postgresql.service

اکنون که نرم‌افزار نصب و اجرا شده است، می‌توانید بررسی کنید که چگونه کار می‌کند و چه تفاوت‌هایی با سایر سیستم‌های مدیریت پایگاه داده رابطه‌ای که ممکن است استفاده کرده باشید دارد.

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

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

به صورت پیش‌فرض، Postgres از مفهومی به نام نقش‌ها (Roles) برای مدیریت احراز هویت و مجوزها استفاده می‌کند. این مفهوم از برخی جهات شبیه به حساب‌های کاربری معمولی در Unix است، اما Postgres بین کاربران و گروه‌ها تفاوتی قائل نمی‌شود و به جای آن، از اصطلاح انعطاف‌پذیرتر نقش استفاده می‌کند.

پس از نصب، Postgres برای استفاده از احراز هویت همتای (peer authentication) تنظیم شده است، به این معنی که نقش‌های Postgres را با یک حساب کاربری Unix/Linux هم‌نام مرتبط می‌کند. اگر یک نقش در Postgres وجود داشته باشد، یک نام کاربری در Unix/Linux با همان نام می‌توان به عنوان آن نقش وارد شود.

فرآیند نصب، یک حساب کاربری با نام Postgres ایجاد کرده است که به نقش پیش‌فرض Postgres مرتبط است. برای استفاده از Postgres، می‌توانید وارد این حساب شوید. چندین روش برای دسترسی به Postgres از طریق حساب وجود دارد.

تغییر به حساب Postgres

برای تغییر به حساب Postgres در سرور خود، این دستور را وارد کنید.

sudo -i -u postgres

اکنون می‌توانید مستقیما به PostgreSQL prompt دسترسی داشته باشید.

psql

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

برای خروج از PostgreSQL prompt، دستور زیر را اجرا کنید.

\q

این دستور شما را به خط فرمان حساب Postgres در Linux باز می‌گرداند.

دسترسی به PostgreSQL Prompt بدون تغییر حساب

همچنین می‌توانید دستورات موردنظر را مستقیما با حساب Postgres از طریق sudo اجرا کنید.

برای مثال، در مثال قبل، ابتدا به حساب Postgres سویچ کردید و سپس با اجرای psql وارد محیط Postgres شدید. می‌توانید این کار را در یک محیط با اجرای این دستور انجام دهید.

sudo -u postgres psql

این دستور شما را مستقیما وارد Postgres می‌کند بدون اینکه نیاز به باز کردن یک bash shell واسطه باشد.

برای خروج از جلسه تعاملی Postgres، کافی است دستور زیر را اجرا کنید.

\q

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

بیشتر بخوانید: چگونه از دستورات تاریخچه و گسترش های Bash در یک سرور لینوکسی استفاده کنیم؟

ایجاد یک نقش جدید

در حال حاضر، شما نقش Postgres را در پایگاه داده پیکربندی کرده‌اید. می‌توانید نقش‌های جدید را از طریق خط فرمان با استفاده از دستور createuser ایجاد کنید.

فلگ --interactive باعث می‌شود که از شما نام نقش جدید پرسیده شود و همچنین مشخص کند که آیا این نقش باید در دسترسی سوپر یوزر داشته باشد یا خیر.

اگر به عنوان حساب Postgres وارد شده‌اید، می‌توانید یک کاربر جدید را با وارد کردن دستور زیر ایجاد کنید.

createuser --interactive

اما اگر ترجیح می‌دهید برای هر دستور از sudo استفاده کنید و حساب کاربری خود را تغییر ندهید، دستور زیر را اجرا کنید.

sudo -u postgres createuser --interactive

این اسکریپت از شما چند سوال می‌پرسد و بر اساس پاسخ‌های شما، دستورات مناسب Postgres را اجرا می‌کنید تا کاربری مطابق مشخصات شما ایجاد شود.

Output
Enter name of role to add: sammy
Shall the new role be a superuser? (y/n) y

برای دسترسی به گزینه‌های بیشتر می‌توانید از صفحه manual دستور createuser را بررسی کنید.

man createuser

اکنون نصب Postgres شما دارای یک کاربر جدید است، اما هنوز هیچ پایگاه داده‌ای ایجاد نشده است؛ بخش بعدی این فرآیند را توضیح می‌دهد.

بیشتر بخوانید: PostgreSQL چیست؟

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

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

این یعنی اگر کاربری که در بخش قبل ایجاد کردید، sammy نام داشته باشد، این نقش به صورت پیش‎‌فرض سعی می‌کند به پایگاه داده‌ای با نام sammy متصل شود. شما می‌توانید این پایگاه داده را با استفاده از دستور createdb ایجاد کنید.

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

createdb sammy

اما اگر ترجیح می‌دهید برای هر دستور از sudo استفاده کنید و حساب کاربری خود را تغییر ندهید، دستور زیر را اجرا کنید.

sudo -u postgres createdb sammy

این روش به شما این امکان را می‌دهد به روش‌های مختلف پایگاه داده‌های مورد نیاز خود را ایجاد کنید.

باز کردن محیط Postgres با نقش جدید

برای ورود با احراز هویت peer، باید یک کاربر لینوکس با همان نام و نقش پایگاه داده Postgres داشته باشید.

اگر چنین کاربری در لینوکس ندارید، می‌توانید با استفاده از دستور adduser آن را ایجاد کنید. این کاربر را باید از یک حساب غیر از root که دارای دسترسی sudo است انجام دهید (یعنی وقتی که به عنوان کاربر Postgres وارد نشده‌اید).

sudo adduser sammy

پس از ایجاد این حساب می‌توانید به آن وضعیت داده و به پایگاه داده متصل شوید.

sudo -i -u sammy
psql

یا می‌توانید این کار را در یک خط انجام دهید.

sudo -u sammy psql

این دستور شما را به صورت خودکار وارد Postgres می‌کند. مشروط بر اینکه همه تنظیمات به درستی پیکربندی شده باشند.

اگر می‌خواهید کاربر شما به یک پایگاه داده دیگر متصل شود، می‌توانید پایگاه داده موردنظر را مشخص کنید.

psql -d postgres

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

\conninfo
Output
You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

این دستور زمانی مفید است که به پایگاه داده یا کاربران غیرپیش‌فرض متصل شده باشید.

با سرور اوبونتو لیارا، سرور خود را با هزینه به‌صرفه و بالاترین کارایی مدیریت کنید.
✅ استقرار سریع ✅ منابع بهینه ✅ امنیت پیشرفته
خرید سرور مجازی اوبونتو ساعتی لیارا

ایجاد و حذف جداول

حالا که نحوه اتصال به سیستم پایگاه داده PostgreSQL را یاد گرفته‌اید، می‌توانید با برخی وظایف مدیریت اولیه Postgres آشنا شوید.

دستور پایه برای ایجاد جداول به این صورت است.

CREATE TABLE table_name (
    column_name1 col_type (field_length) column_constraints,
    column_name2 col_type (field_length),
    column_name3 col_type (field_length)
);

این دستور :

  • یک جدول با نام مشخص ایجاد می‌کند.
  • ستون‌ها جدول را تعریف می‌کند که شامل نام ستون، نوع داده و طول مفید است.
  • به صورت اختیاری، محدودیت‌هایی برای هر ستون می‌توان تعریف کرد.

برای تمرین و نمایش عملکرد جدول‌ها، جدول زیر را ایجاد کنید.

CREATE TABLE playground (
    equip_id serial PRIMARY KEY,
    type varchar (50) NOT NULL,
    color varchar (25) NOT NULL,
    location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
    install_date date
);

توضیح این دستور:

این جدول تجهیزات زمین‌بازی را ایجاد می‌کند.

  • ستون اول (equip_id)یک شناسه خودکار است که به صورت خودکار مقداردهی می‌شود و دارای کلید اصلی است، یعنی مقدار آن منحصر به فرد و غیر قابل خالی بودن است.
  • ستون‌های type و color به ترتیب نوع تجهیزات و رنگ آن را مشخص می‌کنند و مقدار آن نباید خالی باشد.
  • ستون location مشخص می‌کند که تجهیزات در کدام جهت جغرافیایی قرار دارند و مقدار آن باید یکی از مقدار مشخص شده باشد.
  • ستون install_date تاریخ نصب تجهیزات را ذخیره می‌‌کند.

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

برای بررسی جدول جدید، این دستور را اجرا کنید.

\d
Output
                  List of relations
 Schema |          Name           |   Type   | Owner 
--------+-------------------------+----------+-------
 public | playground              | table    | sammy
 public | playground_equip_id_seq | sequence | sammy
(2 rows)

در این خروجی، مشاهده می‌کنید که جدول playground ایجاد شده است، اما علاوه بر آن یک sequence با نام playground_equip_id_seq نیز وجود دارد. این مکانیزم خودکار مقداردهی ستون serial است که مقدار بعدی equip_id را مدیریت می‌کند.

برای نمایش فقط جدول بدون نمایش sequence، از دستور زیر استفاده کنید.

\dt
Output
          List of relations
 Schema |    Name    | Type  | Owner 
--------+------------+-------+-------
 public | playground | table | sammy
(1 row)

اکنون که یک جدول ایجاد شده است، می‌توانیم از آن برای تمرین مدیریت داده‌ها استفاده کنید.

نصب PostgreSQL

افزودن، جستجو و حذف داده‌ها در یک جدول

حالا که یک جدول دارید، می‌توانید داده‌هایی را در آن درج کنید.

به عنوان مثال، برای افزودن یک سرسره (slide) و یک تاب (swing) به جدول، باید نام جدول، نام ستون‌ها و سپس مقدار هر ستون را مشخص کنید.

INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');
  • نام ستون‌ها را در نقل قول قرار ندهید، اما مقادیر را باید درون نقل قول بگذارید.
  • مقدار ستون equip_id را وارد نکنید، زیرا این مقدار به‌طور خودکار هنگام درج داده ایجاد می‌شود.

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

SELECT * FROM playground;
Output
 equip_id | type  | color  | location  | install_date 
----------+-------+--------+-----------+--------------
        1 | slide | blue   | south     | 2017-04-28
        2 | swing | yellow | northwest | 2018-08-16
(2 rows)

همان‌طور که مشاهده می‌کنید، مقدار equip_id به‌طور خودکار مقداردهی شده و داده‌های دیگر نیز به درستی در جدول ذخیره و نمایش داده شده‌اند.

اگر سرسره (slide) در زمین‌بازی خراب شود و بخواهید آن را از جدول حذف کنید، از دستور زیر استفاده کنید.

DELETE FROM playground WHERE type = 'slide';

اکنون دوباره جدول را بررسی کنید.

SELECT * FROM playground;
Output
 equip_id | type  | color  | location  | install_date 
----------+-------+--------+-----------+--------------
        2 | swing | yellow | northwest | 2018-08-16
(1 row)

همان‌طور که مشاهده می‌کنید، ردیف مربوط به slide حذف شده است و فقط swing در جدول باقی مانده است.

با سرور مجازی ابری لیارا، بدون دردسر سرور خود را سریع و امن راه‌اندازی کنید!
✅ منابع اختصاصی و قابل تنظیم ✅ مقیاس‌پذیری آسان ✅ امنیت پیشرفته ✅ قیمت مقرون‌به‌صرفه
خرید سرور مجازی ابری لیار

افزودن و حذف ستون‌ها از یک جدول

بعد از ایجاد یک جدول، می‌توانید ستون‌های جدید اضافه کنید یا ستون‌های موجود را حذف کنید.

برای مثال، برای افزودن ستونی که تاریخ آخرین بازدید تعمیر و نگهداری تجهیزات را نشان دهد، از دستور زیر استفاده کنید.

ALTER TABLE playground ADD last_maint date;

حالا دوباره اطلاعات جدول را بررسی کنید.

SELECT * FROM playground;
Output
 equip_id | type  | color  | location  | install_date | last_maint 
----------+-------+--------+-----------+--------------+------------
        2 | swing | yellow | northwest | 2018-08-16   | 
(1 row)

همان‌طور که می‌بینید، ستون last_maint به جدول اضافه شده، اما هنوز داده‌ای در آن وارد نشده است.

اگر تیم تعمیر و نگهداری از ابزارهای جداگانه‌ای برای ثبت تاریخ‌های تعمیرات استفاده کند و دیگر نیازی به این ستون نباشد، می‌توانید آن را حذف کنید.

ALTER TABLE playground DROP last_maint;

این دستور ستون last_maint را حذف کرده و تمام مقادیر موجود در آن را پاک می‌کند، اما سایر اطلاعات جدول دست‌نخورده باقی می‌ماند.

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

تا اینجا یاد گرفتید که چگونه رکوردی را اضافه یا حذف کنید، اما هنوز نحوه تغییر اطلاعات یک رکورد را بررسی نشده است.

برای ویرایش یک مقدار در یک رکورد خاص، باید رکورد موردنظر را جستجو کرده و مقدار ستون موردنظر را تغییر دهید.

برای مثال، اگر بخواهید رنگ تاب را به “قرمز” تغییر دهید (شاید آن را رنگ کرده باشید)، می‌توانید از این دستور استفاده کنید.

UPDATE playground SET color = 'red' WHERE type = 'swing';

برای اطمینان از اینکه تغییرات به درستی اعمال شده‌اند، دوباره جدول را بررسی کنید.

SELECT * FROM playground;
Output
 equip_id | type  | color | location  | install_date 
----------+-------+-------+-----------+--------------
        2 | swing | red   | northwest | 2018-08-16
(1 row)

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

سرور مجازی اوبونتو

همچنین بخوانید: آموزش بکاپ گیری از PostgreSQL در اوبونتو 24.04

همینطور بخوانید: استفاده از Fast API با دیتابیس رابطه ای در سرور مجازی اوبونتو Ubuntu

جمع بندی

در این مقاله با نحوه نصب، راه‌اندازی و استفاده از PostgreSQL در سرور Ubuntu 22.04 آشنا شدید. PostgreSQL یکی از قدرتمندترین سیستم‌های مدیریت پایگاه داده رابطه‌ای است که امکانات گسترده‌ای برای مدیریت داده‌ها، تعریف نقش‌ها، ایجاد پایگاه‌های داده و کار با جداول ارائه می‌دهد.

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

مدیریت اصولی پایگاه داده نه‌تنها به بهبود عملکرد سیستم کمک می‌کند، بلکه امنیت و دسترس‌پذیری داده‌های شما را نیز تضمین خواهد کرد. در ادامه مسیر می‌توانید با مفاهیم پیشرفته‌تری مانند ایندکس‌گذاری، کوئری‌های پیچیده و بهینه‌سازی عملکرد بیشتر آشنا شوید.

به اشتراک بگذارید