ค้นหาเว็บไซต์

วิธีติดตั้งฐานข้อมูล PostgreSQL ใน Debian 10


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

ที่สำคัญ PostgreSQL ช่วยให้คุณสามารถกำหนดประเภทข้อมูลของคุณเอง เพิ่มฟังก์ชันที่กำหนดเอง แม้กระทั่งเขียนโค้ดจากภาษาการเขียนโปรแกรมต่างๆ เช่น C/C++, Java ฯลฯ โดยไม่ต้องคอมไพล์ฐานข้อมูลของคุณใหม่

PostgreSQL ถูกใช้โดยบริษัทเทคโนโลยีที่มีชื่อเสียง เช่น Apple, Fujitsu, Red Hat, Cisco, Juniper Network เป็นต้น

ในบทความนี้ เราจะแสดงวิธีการติดตั้ง รักษาความปลอดภัย และกำหนดค่าเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL ใน Debian 10

ความต้องการ:

  1. ติดตั้งเซิร์ฟเวอร์ขั้นต่ำ Debian 10 (Buster)

การติดตั้งเซิร์ฟเวอร์ PostgreSQL บน Debian 10

หากต้องการติดตั้งเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL ให้ใช้ตัวจัดการแพ็คเกจ APT เริ่มต้น ซึ่งจะติดตั้งเซิร์ฟเวอร์และไคลเอ็นต์ PostgreSQL 11

apt install postgresql-11 postgresql-client-11

บน Debian เช่นเดียวกับ daemons อื่นๆ ฐานข้อมูล Postgres จะถูกเตรียมใช้งานทันทีหลังจากการติดตั้งแพ็คเกจเสร็จสมบูรณ์ ดังที่แสดงในภาพหน้าจอต่อไปนี้

หากต้องการตรวจสอบว่าฐานข้อมูล Postgres ได้รับการเตรียมใช้งานจริงหรือไม่ คุณสามารถใช้ยูทิลิตี pg_isready ซึ่งจะตรวจสอบสถานะการเชื่อมต่อของเซิร์ฟเวอร์ PostgreSQL ดังต่อไปนี้

pg_isready 

นอกจากนี้ ภายใต้ systemd บริการ Postgres จะเริ่มทำงานโดยอัตโนมัติและเปิดใช้งานเพื่อเริ่มเมื่อบูตระบบ เพื่อให้แน่ใจว่าบริการทำงานได้ดี ให้รันคำสั่งต่อไปนี้

systemctl status postgresql

ต่อไปนี้เป็นคำสั่ง systemctl ที่มีประโยชน์อื่นๆ ในการจัดการบริการ Postgres ภายใต้ systemd

systemctl start postgresql
systemctl restart postgresql
systemctl stop postgresql
systemctl reload postgresql 		#this reloads the service configuration

การรักษาความปลอดภัยและการกำหนดค่าฐานข้อมูล PostgreSQL

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

ระบบที่เริ่มต้นใหม่จะมีบทบาทที่กำหนดไว้ล่วงหน้าหนึ่งบทบาทที่เรียกว่า postgres เสมอ โดยมีชื่อเดียวกับบัญชีผู้ใช้ระบบปฏิบัติการที่เรียกว่า postgres ซึ่งใช้เพื่อเข้าถึง psql (เชลล์ Postgres) และโปรแกรมฐานข้อมูลอื่นๆ

บัญชีผู้ใช้ระบบ Postgres ไม่ได้รับการป้องกันโดยใช้รหัสผ่าน เพื่อความปลอดภัย คุณสามารถสร้างรหัสผ่านโดยใช้ ยูทิลิตี้ passwd

passwd postgres

นอกจากนี้ บทบาท Postgres (หรือผู้ใช้ฐานข้อมูลผู้ดูแลระบบ หากคุณต้องการ) จะไม่ได้รับการรักษาความปลอดภัยตามค่าเริ่มต้น คุณต้องรักษาความปลอดภัยด้วยรหัสผ่าน ตอนนี้สลับไปที่บัญชีผู้ใช้ระบบ postgres และบทบาท postgres (อย่าลืมตั้งรหัสผ่านที่รัดกุมและปลอดภัย) ดังที่แสดง

su - postgres
psql -c "ALTER USER postgres WITH PASSWORD 'securepass_here';"

จากนั้นออกจากบัญชี postgres เพื่อดำเนินการตามคำแนะนำ

การกำหนดค่าการตรวจสอบสิทธิ์ไคลเอ็นต์

ไฟล์การกำหนดค่า Postgres หลักอยู่ที่ /etc/postgresql/11/main/postgresql.conf นอกจากไฟล์นี้ Postgres ยังใช้ไฟล์การกำหนดค่าที่แก้ไขด้วยตนเองอีกสองไฟล์ ซึ่งควบคุมการตรวจสอบสิทธิ์ไคลเอ็นต์

การตรวจสอบสิทธิ์ไคลเอ็นต์ถูกควบคุมโดยไฟล์การกำหนดค่า /etc/postgresql/11/main/pg_hba.conf Postgres มีวิธีการตรวจสอบสิทธิ์ไคลเอ็นต์ที่แตกต่างกันมากมาย รวมถึงการตรวจสอบสิทธิ์โดยใช้รหัสผ่าน การเชื่อมต่อไคลเอ็นต์ได้รับการตรวจสอบความถูกต้องตามที่อยู่โฮสต์ไคลเอ็นต์ ฐานข้อมูล และผู้ใช้

หากคุณเลือกที่จะใช้การตรวจสอบสิทธิ์ด้วยรหัสผ่าน คุณสามารถใช้วิธีใดวิธีหนึ่งต่อไปนี้: md5 หรือ รหัสผ่าน ซึ่งทำงานคล้ายกัน ยกเว้นวิธีที่รหัสผ่านถูกส่งผ่านการเชื่อมต่อ ได้แก่ MD5-hashed และข้อความธรรมดาตามลำดับ

การใช้ การตรวจสอบรหัสผ่าน md5 ป้องกันการดักจับรหัสผ่านโดยแฮกเกอร์ และหลีกเลี่ยงการจัดเก็บรหัสผ่านบนเซิร์ฟเวอร์ในรูปแบบข้อความธรรมดา วิธีรหัสผ่านสามารถใช้ได้อย่างปลอดภัยหากการเชื่อมต่อได้รับการป้องกันด้วยการเข้ารหัส SSL

สำหรับคู่มือนี้ เราจะแสดงวิธีกำหนดค่า การตรวจสอบสิทธิ์รหัสผ่าน md5 สำหรับการตรวจสอบสิทธิ์ไคลเอ็นต์

vim /etc/postgresql/11/main/pg_hba.conf 

มองหาบรรทัดต่อไปนี้และเปลี่ยนวิธีการรับรองความถูกต้องเป็น md5 ดังที่แสดงในภาพหน้าจอ

local   all             all                                     md5

บันทึกการเปลี่ยนแปลงในไฟล์และออก จากนั้นใช้การเปลี่ยนแปลงล่าสุดโดยเริ่มบริการ Postgres ใหม่ดังนี้

systemctl restart postgresql

การสร้างฐานข้อมูลและบทบาท/ผู้ใช้ฐานข้อมูลใหม่ใน PostgreSQL

ในส่วนสุดท้ายนี้ เราจะแสดงวิธีสร้างผู้ใช้ฐานข้อมูลใหม่และบทบาทของฐานข้อมูลในการจัดการ ขั้นแรก ให้เปลี่ยนไปใช้บัญชี postgres และเปิดเชลล์ Postgres ดังนี้

su - postgres
psql

หากต้องการสร้างฐานข้อมูลชื่อ “test_db ” ให้รันคำสั่ง SQL ต่อไปนี้

postgres=# CREATE DATABASE test_db;

จากนั้นสร้างผู้ใช้ฐานข้อมูล (บทบาทที่มีสิทธิ์เข้าสู่ระบบ) ซึ่งจะจัดการฐานข้อมูลใหม่ดังนี้

postgres=#CREATE USER test_user PASSWORD ‘securep@ss_here’;     #assumes login function by default

หากต้องการเชื่อมต่อกับ test_db ในฐานะผู้ใช้ test_user ให้รันคำสั่งต่อไปนี้

 
psql -d  test_db  -U test_user

สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสาร PostgreSQL 11

บทสรุป

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