จะติดตั้ง PostgreSQL บน Ubuntu, CentOS และ Windows ได้อย่างไร?

เผยแพร่แล้ว: 2021-06-08

PostgreSQL เป็นหนึ่งในระบบฐานข้อมูลเชิงสัมพันธ์แบบโอเพ่นซอร์สที่ได้รับความนิยมข้ามแพลตฟอร์มซึ่งมีความแข็งแกร่ง มีประสิทธิภาพสูง และเชื่อถือได้พร้อมชุมชนที่แข็งแกร่ง

มีขึ้นตั้งแต่ปี 1986 โดยเป็นส่วนหนึ่งของโครงการ POSTGRES ที่มหาวิทยาลัยแคลิฟอร์เนีย เบิร์กลีย์ และดำเนินการพัฒนาอย่างต่อเนื่องเป็นเวลา 30 ปีบนแพลตฟอร์มหลัก ประสิทธิภาพที่สม่ำเสมอตลอดหลายปีที่ผ่านมาได้พิสูจน์ความสมบูรณ์ สถาปัตยกรรม และความสามารถในการขยายสำหรับการใช้งานในองค์กร เป็นไปตามข้อกำหนดของ ACID และให้การสนับสนุนสำหรับส่วนเสริมที่ทรงพลัง เช่น ตัวขยายฐานข้อมูลเชิงพื้นที่ PostGIS ยอดนิยม

เราจะกล่าวถึงการติดตั้ง PostgreSQL บนแพลตฟอร์มทั่วไปในบทความนี้

มาเริ่มกันเลยดีกว่า

อูบุนตู

PostgreSQL ใช้ได้กับ Ubuntu ทุกรสชาติและทุกเวอร์ชัน คุณมีทางเลือกในการติดตั้งและใช้เวอร์ชันที่พร้อมใช้งานโดยค่าเริ่มต้นกับเวอร์ชัน Ubuntu ของคุณและรองรับตลอดอายุการใช้งาน หรือใช้เวอร์ชันเฉพาะโดยเพิ่มที่เก็บ PostgreSQL และติดตั้งแบบเดียวกัน เราจะครอบคลุมทั้งสองตัวเลือกที่นี่

หากต้องการใช้เวอร์ชันเริ่มต้นที่ได้รับการสนับสนุนโดยที่เก็บของ Ubuntu ให้เรียกใช้:

 $ sudo apt-get update $ sudo apt-get -y install postgresql

PostgreSQL Apt Repository รองรับ Ubuntu รุ่น LTS ปัจจุบัน เช่น 20.04 , 18.04 และ 16.04 แม้ว่าอาจไม่ได้รับการสนับสนุนอย่างสมบูรณ์ แต่แพ็คเกจเดียวกันก็ใช้งานได้กับเวอร์ชันที่ไม่ใช่ LTS เช่นกันโดยใช้เวอร์ชัน LTS ที่ใกล้เคียงที่สุด

ในการใช้ PostgreSQL apt repository ให้ทำตามขั้นตอนเหล่านี้:

 $ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' $ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - $ sudo apt-get update $ sudo apt-get -y install postgresql

ในการติดตั้งเวอร์ชันเฉพาะจากที่เก็บ PostgreSQL แทนที่จะใช้แค่ postgresql ซึ่งอ้างถึงเวอร์ชันล่าสุด ให้ระบุเช่น postgresql-12 :

 $ sudo apt-get -y install postgresql-12

ที่เก็บข้อมูลยังมีแพ็คเกจต่าง ๆ รวมถึงส่วนเสริมของบุคคลที่สาม ตัวอย่างเช่น แพ็คเกจที่พร้อมใช้งานทั่วไปสำหรับ PostgreSQL เวอร์ชัน 12 ประกอบด้วย:

postgresql-client-12 ไลบรารีไคลเอ็นต์และไบนารีไคลเอ็นต์
postgresql-12 เซิร์ฟเวอร์ฐานข้อมูลหลัก
postgresql-contrib-9.x โมดูลที่ให้มาเพิ่มเติม (ส่วนหนึ่งของแพ็คเกจ postgresql-xx ในเวอร์ชัน 10 และใหม่กว่า)
libpq-dev ไลบรารีและส่วนหัวสำหรับการพัฒนาส่วนหน้าของภาษา C
postgresql-server-dev-12 ไลบรารีและส่วนหัวสำหรับการพัฒนาแบ็กเอนด์ภาษา C
pgadmin4 pgAdmin 4 ยูทิลิตี้การดูแลระบบกราฟิก

เมื่อการติดตั้งเสร็จสิ้น คุณสามารถตรวจสอบสถานะของบริการ DB ได้โดยใช้คำสั่งด้านล่าง:

 $ sudo systemctl status postgresql.service

สำหรับ Ubuntu หลังการติดตั้ง บริการควรเปิดใช้งานและทำงานดังนี้:

 $ sudo systemctl status postgresql.service ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Sun 2021-06-06 16:06:45 UTC; 46s ago Main PID: 3364 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 1113) Memory: 0B CGroup: /system.slice/postgresql.service Jun 06 16:06:45 ubuntu20cloud systemd[1]: Starting PostgreSQL RDBMS... Jun 06 16:06:45 ubuntu20cloud systemd[1]: Finished PostgreSQL RDBMS. $

CentOS

เช่นเดียวกับ Ubuntu ที่เก็บ RHEL/CentOS ยังมี PostgreSQL เวอร์ชันเฉพาะ ซึ่งได้รับการสนับสนุนตลอดอายุการใช้งานสำหรับระบบปฏิบัติการ คุณสามารถติดตั้งได้โดยใช้:

 $ sudo yum install -y postgresql-server

หรือคุณสามารถใช้ DNF หากใช้ CentOS 8

 $ sudo dnf install -y postgresql-server

เรียกใช้คำสั่งด้านล่างหลังการติดตั้งเพื่อเริ่มต้น DB เปิดใช้งานบริการ PostgreSQL และเริ่มใช้งาน:

 $ sudo postgresql-setup initdb $ sudo systemctl enable postgresql.service $ sudo systemctl start postgresql.service

หรือหากต้องการใช้แพ็คเกจโดยตรงจากที่ เก็บ PostgreSQL yum เราต้องเพิ่มที่เก็บเป็น:

 $ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

จากนั้นหากต้องการติดตั้ง PostgreSQL เวอร์ชันเฉพาะเช่นเวอร์ชัน 13 ซึ่งเป็นเวอร์ชันเสถียรล่าสุดในขณะที่เขียนบทความนี้ ให้ใช้:

 $ sudo yum install -y postgresql13-server

ที่เก็บ yum ยังมีแพ็คเกจเพิ่มเติมสำหรับ PostgreSQL ซึ่งมีรายการสำคัญอยู่ด้านล่าง:

postgresql-ไคลเอนต์ ไลบรารีและไบนารีไคลเอ็นต์
postgresql-เซิร์ฟเวอร์ เซิร์ฟเวอร์ฐานข้อมูลหลัก
postgresql-contrib โมดูลที่ให้มาเพิ่มเติม
postgresql-devel ห้องสมุดและส่วนหัวสำหรับการพัฒนาภาษา C

เรียกใช้ขั้นตอนด้านล่างหลังการติดตั้งเพื่อเริ่มต้น DB เปิดใช้งานบริการ PostgreSQL และเริ่มต้น:

 $ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb $ sudo systemctl enable postgresql-13 $ sudo systemctl start postgresql-13

คุณสามารถตรวจสอบสถานะของบริการ DB ได้โดยใช้คำสั่งด้านล่าง:

 $ sudo systemctl status postgresql.service ● postgresql.service - PostgreSQL database server Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2021-06-06 16:39:35 GMT; 1min 12s ago Process: 7011 ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (code=exited, status=0/SUCCESS) Process: 7005 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) CGroup: /system.slice/postgresql.service ├─7014 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432 ├─7015 postgres: logger process ├─7017 postgres: checkpointer process ├─7018 postgres: writer process ├─7019 postgres: wal writer process ├─7020 postgres: autovacuum launcher process └─7021 postgres: stats collector process Jun 06 16:39:34 centos7cloud systemd[1]: Starting PostgreSQL database server... Jun 06 16:39:35 centos7cloud systemd[1]: Started PostgreSQL database server. $

Windows

โปรแกรมติดตั้ง Windows รุ่น 32 บิตและ 64 บิตมีให้จากเว็บไซต์ PostgreSQL อย่างเป็นทางการที่นี่

  • คุณสามารถดาวน์โหลดไบนารีที่เกี่ยวข้องตามเวอร์ชันและสถาปัตยกรรมที่ต้องการ

postgresql-download

  • เราจะดาวน์โหลดเวอร์ชันล่าสุดที่มีให้ ซึ่งก็คือ v13.3 สำหรับแพลตฟอร์ม Windows 64 บิต เมื่อการดาวน์โหลดเสร็จสิ้น ให้เปิดโปรแกรมติดตั้งโดยดับเบิลคลิกที่มัน

postgresql-install-launch

  • คลิกถัดไปเพื่อดำเนินการต่อ

postgresql-install-location

  • คลิก ถัดไป เพื่อดำเนินการต่อด้วยพาธเริ่มต้น หรือระบุพาธการติดตั้งแบบกำหนดเองของคุณ

  • คุณสามารถเก็บส่วนประกอบเริ่มต้นที่เลือกไว้และคลิกถัดไปเพื่อดำเนินการต่อ

postgresql-install-datadir

  • ถัดไปจะขอตำแหน่งไดเร็กทอรีข้อมูล ค่านี้สามารถเก็บไว้เป็นค่าเริ่มต้นได้ เว้นแต่คุณจะกำหนดดิสก์หรือไดเร็กทอรีเฉพาะแยกต่างหาก คลิกถัดไปเพื่อดำเนินการต่อ

postgresql-install-password

  • ระบุรหัสผ่านที่รัดกุมที่จะกำหนดให้กับผู้ใช้ postgres คลิกถัดไปเมื่อเสร็จสิ้น

postgresql-install-port

  • พอร์ตเริ่มต้น 5432 น่าจะดีสำหรับกรณีส่วนใหญ่ คลิกถัดไปเพื่อไปยังหน้าถัดไป

postgresql-install-locale

  • เลือกโลแคลสำหรับ DB และคลิก ถัดไป เพื่อดำเนินการต่อ

postgresql-install-confirmation

  • การตั้งค่าที่เลือกทั้งหมดสำหรับวิซาร์ดการติดตั้งจะแสดงรายการเพื่อให้คุณตรวจสอบและยืนยัน หากจำเป็นต้องเปลี่ยนแปลงอะไร ให้กลับไปเปลี่ยนสิ่งเดิมหรือคลิก ถัดไป เพื่อไปยังหน้าถัดไป

postgresql-install-confirmation-1

  • การติดตั้งจะแสดงว่าพร้อมที่จะดำเนินการติดตั้งต่อ เมื่อพร้อมแล้ว ให้คลิก ถัดไป เพื่อเริ่มการติดตั้ง

postgresql-install-progress

  • รอให้การติดตั้งเสร็จสิ้น การยืนยันจะปรากฏขึ้นเช่นเดียวกัน

postgresql-install-completed

  • เมื่อเสร็จแล้ว คุณสามารถยกเลิกการเลือก Stack Builder และคลิก Finish เพื่อออกจากวิซาร์ดการติดตั้ง คลิกที่ Start Menu และค้นหา SQL Shell (psql) และคลิกที่ไอคอนเพื่อเปิด psql shell

psql-start-menu

  • SQL Shell (psql) เปิดขึ้นซึ่งคุณสามารถโต้ตอบกับอินสแตนซ์ PostgreSQL ของคุณหลังจากระบุรายละเอียดการเชื่อมต่อ คุณสามารถเลือกรายการทั้งหมดเป็นค่าเริ่มต้นได้โดยกด Enter ยกเว้นรหัสผ่าน ซึ่งคุณต้องป้อนรหัสผ่านที่ระบุสำหรับผู้ใช้ postgres ระหว่างวิซาร์ดการติดตั้ง สิ่งนี้จะนำคุณไปสู่ postgres=# prompt

psql-sql-shell-windows

เชื่อมต่อกับ PostgreSQL

ผู้ใช้ postgres จะถูกสร้างขึ้นโดยอัตโนมัติหลังการติดตั้ง ซึ่งมีสิทธิ์เข้าถึง superadmin ระบบระดับสูงในอินสแตนซ์ DB บน Linux ในฐานะผู้ใช้ที่มีสิทธิพิเศษ คุณสามารถเปลี่ยนไปใช้บัญชีนี้ได้ดังนี้:

 $ sudo su - postgres

เมื่อเข้ามาแล้ว เราสามารถรีเซ็ตรหัสผ่านผู้ใช้ postgres เป็น:

 $ psql -c "alter user postgres with password '[email protected]'"

จากนั้นเปิดพรอมต์ PostgreSQL ด้วย psql เป็น:

 $ psql

สิ่งนี้จะนำคุณเข้าสู่พรอมต์ PostgreSQL:

 $ psql psql (12.7 (Ubuntu 12.7-0ubuntu0.20.04.1)) Type "help" for help. postgres=#

ที่พรอมต์นี้ คุณสามารถโต้ตอบกับฐานข้อมูลและทำงานของผู้ดูแลระบบฐานข้อมูลหรือผู้ใช้ ในการสาธิต ขั้นตอนด้านล่างสร้างฐานข้อมูลและผู้ใช้ จากนั้นกำหนดสิทธิ์ให้กับผู้ใช้ใหม่เพื่อทำงานกับฐานข้อมูลใหม่:

 postgres=# CREATE DATABASE geekflaredb; CREATE DATABASE postgres=# CREATE USER geekuser WITH ENCRYPTED PASSWORD '[email protected]'; CREATE ROLE postgres=# GRANT ALL PRIVILEGES ON DATABASE geekflaredb to geekuser; GRANT postgres=#

จากนั้นเราสามารถแสดงรายการฐานข้อมูลโดยใช้คำสั่ง \l :

 postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -------------+----------+----------+---------+---------+----------------------- geekflaredb | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =Tc/postgres + | | | | | postgres=CTc/postgres+ | | | | | geekuser=CTc/postgres postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 | template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 rows) postgres=#

ตอนนี้คุณสามารถเชื่อมต่อกับฐานข้อมูลโดยใช้:

 postgres=# \c geekflaredb You are now connected to database "geekflaredb" as user "postgres". geekflaredb=#

สรุป

PostgreSQL เป็นหนึ่งในฐานข้อมูลที่นำไปใช้กันอย่างแพร่หลายในโลกขององค์กร เนื่องจากมีความคงทน ชุดคุณลักษณะ และความสามารถในการปรับขนาด ง่ายต่อการเรียนรู้และพยายามเข้ากันได้กับมาตรฐาน SQL

มีบทช่วยสอนสำหรับ PostgreSQL บนเว็บไซต์ทางการ