איך להתקין ולהשתמש ב־PostgreSQL על Ubuntu 22.04

הקדמה

מערכות ניהול מסדי נתונים רצונליות הן רכיב מרכזי במגוון אתרי אינטרנט ויישומים. הן מספקות דרך מובנית לאחסון, לארגון ולגישה למידע.

PostgreSQL, או Postgres, הוא מערכת ניהול מסדי נתונים רצונלית שמספקת מימוש של שפת השאילתות SQL. היא תואמת תקנים ומציעה מספר תכונות מתקדמות כמו עסקאות אמינות ואבטחה גבוהה ללא נעילת קריאה.

מדריך זה מדגיש איך להתקין את PostgreSQL על שרת Ubuntu 22.04. הוא גם מספק הוראות לניהול מסדי נתונים כללי.

דרישות מקדימות

כדי להמשיך עם המדריך הזה, תצטרך שרת Ubuntu 22.04 שהוגדר בהתאם להוראות שלנו להגדרת התקנה ראשונית לשרת Ubuntu 22.04. לאחר השלמת ההוראות המקדמות האלו, השרת שלך צריך לכלול משתמש לא-root עם הרשאות sudo וגישה לגישה בסיסית.

שלב 1 — התקנת PostgreSQL

המאגרים המוגדרים כברירת המחדל ב־Ubuntu מכילים חבילות Postgres, ולכן ניתן להתקין אותם באמצעות מערכת האריזה apt.

אם לא עשית זאת לאחרונה, עדכן את אינדקס החבילות המקומי של השרת:

  1. sudo apt update

לאחר מכן, התקן את חבילת ה־Postgres יחד עם חבילת -contrib שמוסיפה כמה יכולות ותכונות נוספות:

  1. sudo apt install postgresql postgresql-contrib

ודא שהשרת פועל באמצעות פקודת systemctl start:

  1. sudo systemctl start postgresql.service

עכשיו, שהתוכנה מותקנת ופועלת, נוכל להתעסק בכיצד היא פועלת ואיך היא עשויה להיות שונה ממערכות מינהל מסדי נתונים רציניות אחרות שאולי השתמשת בהן.

שלב 2 — שימוש בתפקידים ומסדי נתונים של PostgreSQL

כברירת מחדל, Postgres משתמשת במושג הנקרא תפקידים כדי לטפל באימות ובהרשאות. אלה, בדרכים מסוימות, דומים לחשבונות רגילים בסגנון Unix, אך Postgres לא מבדילה בין משתמשים וקבוצות ובמקום זאת מעדיפה את המונח הגמיש יותר "תפקיד".

בעת התקנה, Postgres מוגדר להשתמש באימות על ידי עמית (peer authentication), כלומר הוא משווה תפקידים ב-Postgres עם חשבון מערכת Unix/Linux תואם. אם תפקיד קיים בתוך Postgres, שם משתמש Unix/Linux באותו שם יכול להיכנס כאותו תפקיד.

לפי הליך ההתקנה, נוצר חשבון משתמש בשם postgres הקשור לתפקיד המוגדר כברירת מחדל של Postgres. כדי להשתמש ב-Postgres, ניתן להתחבר לחשבון זה.

ישנם כמה דרכים להשתמש בחשבון זה כדי לגשת ל-Postgres.

החלפת חשבון לחשבון postgres

עבורו לחשבון postgres בשרת שלך על ידי הקלדת:

  1. sudo -i -u postgres

עכשיו ניתן לגשת למסוף של PostgreSQL מיידית על ידי הקלדה של:

  1. psql

משם ניתן להתקשר עם מערכת ניהול מסד הנתונים ככל הצורך.

צא מהמסוף של PostgreSQL על ידי הקלדה של:

  1. \q

זה יביא אותך חזרה למסוף הפקודות של משתמש ה-Linux של postgres.

גישה למסוף של Postgres מבלי להחליף חשבונות

אתה יכול גם להריץ את הפקודה שתרצה עם החשבון postgres ישירות עם sudo.

לדוגמה, בדוגמה האחרונה, הורשת להיכנס למצב ה-Prompt של Postgres על ידי החלפה תחילה למשתמש postgres ואז הרצת psql כדי לפתוח את ה-Prompt של Postgres. ניתן לעשות זאת בצעד אחד על ידי הרצת הפקודה היחידה psql כמשתמש postgres עם sudo, כמו כן:

  1. sudo -u postgres psql

זה יכניס אותך ישירות ל-Postgres בלי המיועד bash בין הפקודות.

שוב, אתה יכול לצאת מההפעלה האינטראקטיבית של Postgres על ידי קלידה של:

  1. \q

הרבה מקרים דורשים יותר משתמש אחד ב-Postgres. קרא כדי ללמוד כיצד להגדיר אלו.

שלב 3 — יצירת תפקיד חדש

כרגע, יש לך את התפקיד postgres מוגדר במסד הנתונים. באפשרותך ליצור תפקידים חדשים מהשורת פקודה עם הפקודה createuser. הדגל --interactive יפעיל אותך לקלט שם של התפקיד החדש וגם ישאל האם יש לו הרשאות סופר משתמש.

אם אתה מחובר כמשתמש החשבון postgres, תוכל ליצור משתמש חדש על ידי קלידה של:

  1. createuser --interactive

אם, במקום זאת, אתה מעדיף להשתמש ב-sudo עבור כל פקודה בלי להחליף מהחשבון הרגיל שלך, הקלד:

  1. sudo -u postgres createuser --interactive

התסריט יבקש ממך בחירות מסוימות ו, בהתבסס על התגובות שלך, יבצע פקודות Postgres נכונות כדי ליצור משתמש לפי המפרטים שלך.

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

ניתן לקבל שליטה נוספת על ידי העברת דגלים נוספים. ניתן לבדוק את האפשרויות על ידי הסתכלות על עמוד ה-man עבור פקודת ה-createuser:

  1. man createuser

ההתקנה שלך של Postgres כעת מכילה משתמש חדש, אך עדיין לא הוספת כל בסיסי נתונים. המקטע הבא מתאר את תהליך זה.

שלב 4 — יצירת בסיס נתונים חדש

עוד הנחה שמערכת האימות של Postgres עושה כברירת מחדל היא שבשביל כל תפקיד המשמש להתחברות, יהיה לתפקיד זה בסיס נתונים באותו השם שהוא יכול לגשת אליו.

כך שאם המשתמש שיצרת במקטע הקודם נקרא sammy, התפקיד הזה ינסה להתחבר לבסיס נתונים הקיים גם הוא בשם "sammy" כברירת מחדל. ניתן ליצור את בסיס הנתונים המתאים באמצעות פקודת ה-createdb.

אם אתה מחובר כמשתמש ה-postgres, יש להקליד משהו דומה למטה:

  1. createdb sammy

אם, במקום זאת, אתה מעדיף להשתמש ב-sudo עבור כל פקודה מבלי להחליף מהחשבון הרגיל שלך, יש להקליד משהו כזה:

  1. sudo -u postgres createdb sammy

הגמישות הזו מספקת נתיבים מרובים ליצירת בסיסי נתונים כפי הצורך.

שלב 5 — פתיחת פרומפט של Postgres עם התפקיד החדש

כדי להתחבר עם אימות על ידי עמית, תצטרך משתמש Linux בשם זהה לשם התפקיד והמסד הנתונים שלך.

אם אין לך משתמש Linux תואם זמין, תוכל ליצור אחד באמצעות פקודת adduser. עליך לעשות זאת מחשבון ה- root הלא פעיל שלך עם הרשאות sudo (שפה, לא מחובר כמשתמש ה- postgres):

  1. sudo adduser sammy

פעם שהחשבון החדש זמין, תוכל להחליף ולהתחבר למסד הנתונים על ידי הקלדת:

  1. sudo -i -u sammy
  2. psql

או, תוכל לעשות זאת באופן מקוון:

  1. sudo -u sammy psql

פקודה זו תכניס אותך למערכת באופן אוטומטי, בהנחה שכל הרכיבים הוגדרו בצורה תקינה.

אם ברצונך שהמשתמש שלך יתחבר למסד נתונים שונה, תוכל לעשות זאת על ידי ציון המסד כך:

  1. psql -d postgres

לאחר ההתחברות, תוכל לבדוק את מידע התחברות הנוכחי שלך על ידי הקלדת:

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

זה מועיל אם אתה מתחבר למסדי נתונים לא דיפולטיים או עם משתמשים לא דיפולטיים.

שלב 6 — יצירת ומחיקת טבלאות

עכשיו שאתה יודע כיצד להתחבר למערכת מסד הנתונים 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)
);

פקודה זו נותנת לטבלה שם, ואז מגדירה את העמודות כמו גם את סוג העמודה ואת אורך השדה המרבי. באופציה, תוכל להוסיף אילוצים עבור כל עמודה.

ניתן ללמוד עוד על יצירת טבלאות על ידי מעקב אחר המדריך שלנו בנושא כיצד ליצור ולנהל טבלאות ב־SQL.

לצורך הדגמה, צור את הטבלה הבאה:

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

פקודה זו תיצור טבלה שמבצעת מלאי של ציוד לגני משחק. העמודה הראשונה בטבלה תחזיק מספרי זיהוי ציוד מסוג serial, שהוא מספר שלם המתרגם אוטומטית. עמוד זה גם מכיל את האילוץ PRIMARY KEY שמשמעו שערכים בו חייבים להיות ייחודיים ולא להיות ריקים.

השורות הבאותיהן יוצרות עמודות עבור סוג הציוד והצבע שלו בהתאם, כאף אחת מהן אינה יכולה להיות ריקה. השורה שאחריהן יוצרת עמודה למיקום עם אילוץ שדרוש שהערך יהיה אחד משמונה ערכים אפשריים. השורה האחרונה יוצרת עמודת תאריך שמקליטה את התאריך בו הותקן הציוד.

עבור שתי העמודות (equip_id ו־install_date), הפקודה אינה מציינת אורך שדה. הסיבה לכך היא שסוגי נתונים מסוימים אינם דורשים אורך קבוע מראש משום שהאורך או הפורמט נתמך.

בדוק את הטבלה החדשה שלך על ידי הקלדה:

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

השולחן של הגן שלך כאן, אבל יש גם משהו בשם playground_equip_id_seq שהוא מסוג sequence. זהו ייצוג של הסוג serial שנתת לעמודת equip_id. זה שומר על עקבות אחר המספר הבא בסדר ונוצר אוטומטית עבור עמודות מסוג זה.

אם ברצונך להציג רק את הטבלה ללא הרצף, תוכל להקליד:

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

עם טבלה מוכנה, בואו נשתמש בה כדי לתרגל בניהול נתונים.

שלב 7 — הוספת, שאילתה ומחיקת נתונים בטבלה

עכשיו שיש לך טבלה, תוכל להוסיף כמה נתונים אליה. כדי לדוגמה, הוסף מגלשה ונדנדה על ידי קריאה לטבלה שבה ברצונך להוסיף, תתן שמות לעמודות ולאחר מכן תספק נתונים עבור כל עמודה, כמו כן:

  1. INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
  2. INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');

עליך להיזהר בעת הזנת הנתונים כדי למנוע כמה דברים נפוצים. למשל, אל תעטוף את שמות העמודות בסימני מרכאות, אך הערכים של העמודות שאתה מזין צריכים לכלול מרכאות.

דבר נוסף לשים לב אליו הוא שאינך מזין ערך עבור העמודה equip_id. זה בגלל שהערך הזה נוצר אוטומטית בכל פעם שמוסיפים שורה חדשה לטבלה.

גש למידע שהוספת על ידי הקלדה:

  1. 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 שלך מולא בהצלחה ושכל הנתונים האחרים שלך מאורגנים כראוי.

אם השקופית בגלישה שבגני המשחק שבמקום שבו אתה צריך להסיר אותה, אתה יכול גם להסיר את השורה מהטבלה שלך על ידי הקלדת:

  1. DELETE FROM playground WHERE type = 'slide';

שאילתה של הטבלה שוב:

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

שים לב שהשורה slide כבר אינה חלק מהטבלה.

שלב 8 — הוספת ומחיקת עמודות מטבלה

לאחר שיצרת טבלה, אתה יכול לשנות אותה על ידי הוספת או הסרת עמודות. הוסף עמודה כדי להציג את ביקור התחזוקה האחרון עבור כל ציוד על ידי הקלדת:

  1. ALTER TABLE playground ADD last_maint date;

הצג שוב את מידע הטבלה שלך. עמודה חדשה נוספה אך לא הוזנו נתונים בה:

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

אם תגלה שצוות העבודה שלך משתמש בכלי נפרד כדי לעקוב אחר היסטוריית התחזוקה, אתה יכול למחוק את העמודה על ידי הקלדת:

  1. ALTER TABLE playground DROP last_maint;

זה מוחק את העמודה last_maint וכל הערכים שנמצאים בתוכה, אך משאיר את כל הנתונים האחרים שלמים.

שלב 9 — עדכון נתונים בטבלה

עד כה, למדת כיצד להוסיף רשומות לטבלה וכיצד למחוק אותן, אך מדריך זה עדיין לא כיסה איך לשנות ערים קיימות.

אתה יכול לעדכן את ערכי הכניסה הקיימים על ידי שאילתת המופע שאתה רוצה והגדרת העמודה לערך שברצונך להשתמש בו. אתה יכול לשאול על הרשומה של swing (זה יתאים לכל swing בטבלה שלך) ולשנות את הצבע שלו ל- red. זה יכול להיות שימושי אם נתת צביעה לסט של הנדנדות:

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

אתה יכול לוודא שהפעולה הייתה מוצלחת על ידי שאילתת הנתונים שוב:

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

המגלשה רשומה כעת כצבע אדום.

מסקנה

אתה מוכן עכשיו עם PostgreSQL על השרת שלך ב-Ubuntu 22.04. אם ברצונך ללמוד עוד על Postgres וכיצד להשתמש בו, אנו מזמינים אותך לבדוק את המדריכים הבאים:

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-22-04