การติดตั้ง PostgreSQL ใน Amazon Linux 2 บน EC2 และการใช้งานเบื้องต้น

PostgreSQL เป็นฐานข้อมูลเชิงสัมพันธ์โอเพ่นซอร์สที่ยอดนิยม สามารถนำไปใช้งานได้ฟรี ซึ่งผมจะนำมาใช้งานร่วมกับ EC2 โดยติดตั้ง PostgreSQL ใน Amazon Linux 2 ด้วยการ Run command ผมจะมาอธิบายขั้นตอนในบทความนี้

POP จากบริษัท Classmethod (Thailand) ครับ

ครั้งนี้ผมจะมาแนะนำการติดตั้ง PostgreSQL10 ใน Amazon Linux 2 และการใช้งานเบื้องต้น โดยการ Run Command ตามขั้นตอนที่ได้เขียนลงในบทความนี้ ! ไปดูกันเลยครับ

สิ่งที่ต้องมี

  • มี EC2 Instance และเชื่อมต่อกับ Server Amazon Linux 2 แล้ว

ผู้ที่ต้องการเริ่มต้นระบบ EC2 Instance สามารถดูตัวอย่างได้ที่ลิงก์บทความด้านล่างนี้

PostgreSQL คืออะไร?

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

ขั้นตอน

ขั้นตอนการติดตั้งและใช้งาน PostgreSQL ในตัวอย่างนี้ จะทำการ Run command ใน Terminal PuTTY ทั้งหมด

ตั้งค่าเริ่มต้น Amazon Linux 2

เข้าใช้งานสิทธิ์ root

sudo su -

อัปเดตเซิร์ฟเวอร์ให้เป็นปัจจุบัน

yum update -y


ติดตั้ง PostgreSQL10

ติดตั้ง PostgreSQL10 (เราสามารถติดตั้งเวอร์ชันที่เราต้องการได้)

amazon-linux-extras install postgresql10 -y


รันคำสั่งนี้เพื่อติดตั้งเซิร์ฟเวอร์ postgresql

yum install postgresql postgresql-server -y


สร้างไฟล์สถานะเริ่มต้น DB ใน PostgreSQL

postgresql-setup initdb

Output (example)
เมื่อรันคำสั่งนี้แล้ว ระบบจะสร้างโฟลเดอร์'/var/lib/pgsql/data'ขึ้นมาเป็นโฟลเดอร์เวอร์ชันสำหรับใส่ฐานข้อมูล

TERMINAL (PuTTY)

[root@ip-172-31-29-138 ~]# postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
[root@ip-172-31-29-138 ~]#


เริ่มต้นระบบ

เริ่มต้นระบบ PostgreSQL

systemctl start postgresql


เปิดการใช้งาน PostgreSQL เมื่อเริ่มต้น OS

systemctl enable postgresql


เชื่อมต่อและ Login

เชื่อมต่อ postgres

su - postgres

Output (example)
ถ้าเชื่อมต่อได้แล้วจะแสดงเป็น-bash-4.2$

TERMINAL (PuTTY)

[root@ip-172-31-29-138 ~]# su - postgres
-bash-4.2$


เข้าใช้งาน psql

psql

Output (example)
ถ้าเข้าใช้งานได้แล้วจะแสดงเป็นpostgres=#

TERMINAL (PuTTY)

-bash-4.2$ psql
psql (10.17)
Type "help" for help.

postgres=#


ตั้งค่า Password

ตั้งค่า Password ที่เราต้องการ (เปลี่ยน********ให้เป็นรหัสของคุณ)
・postgres = Username
・password = รหัสผ่านของเรา

alter role postgres with password '********';

Output (example)
Password:P@ssW0rdนี้เป็นแค่ตัวอย่าง

TERMINAL (PuTTY)

postgres=# alter role postgres with password 'P@ssw0rd';
ALTER ROLE
postgres=#


กลับมาที่ root

ออกจาก psql

\q

Output (example)
เมื่อออกจากpostgresแล้วจะแสดงเป็น-bash-4.2$

TERMINAL (PuTTY)

postgres=# \q
-bash-4.2$


กลับมาที่ root

exit

Output (example)
เมื่อออกจากpsqlแล้วจะแสดงเป็น[root@ip-xxx-xx-xx-xxx ~]#

TERMINAL (PuTTY)

-bash-4.2$ exit
logout
[root@ip-172-31-29-138 ~]#


ตั้งค่าการเชื่อมต่อ PostgreSQL

vi /var/lib/pgsql/data/pg_hba.conf

Output (example)
เมื่อเข้ามาแล้ว ทำการแก้ไข METHOD ของ local, host, host ให้เป็นmd5เหมือนกับตัวอย่างด้านล่างนี้

TERMINAL (PuTTY)

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5


Restart PostgreSQL

systemctl restart postgresql


เชื่อมต่อจาก psql ด้วย ec2-user

psql -h localhost -U postgres

Output (example)

TERMINAL (PuTTY)

[root@ip-172-31-29-138 ~]# psql -h localhost -U postgres
Password for user postgres: [your-password]    # ขณะพิมพ์ Password ตัวอักษรจะไม่แสดงให้เห็น


ทดสอบการใช้งาน

สร้าง Database (เปลี่ยนdatabase_nameให้เป็นชื่อ Database ของคุณ เช่นtinnakorn)

CREATE DATABASE database_name;

Output (example)
ตัวอย่างนี้ใช้ Database ชื่อว่าtinnakorn

TERMINAL (PuTTY)

postgres=# CREATE DATABASE tinnakorn;
CREATE DATABASE
postgres=#


แสดงรายการ database

\l

Output (example)
จะเห็นว่ามีชื่อ Database:tinnakornแสดงขึ้นมา

TERMINAL (PuTTY)

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

postgres=#


เปลี่ยนการเชื่อมต่อ Database (เปลี่ยนdatabase_nameให้เป็นชื่อ Database ของคุณที่สร้างจากขั้นตอนที่แล้ว เช่นtinnakorn)

\c database_name

Output (example)
จะเห็นว่าเปลี่ยนเป็นtinnakorn=#

TERMINAL (PuTTY)

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


สร้าง Table (เปลี่ยนtable_nameให้เป็นชื่อ Table ของคุณ)

create table table_name(id int, message varchar(255));

Output (example)
ตัวอย่างนี้ใช้ Table ชื่อว่าtest

TERMINAL (PuTTY)

tinnakorn=# create table test(id int, message varchar(255));
CREATE TABLE
tinnakorn=#


แสดงรายการ Table

\dt

Output (example)
จะเห็นว่ามีชื่อ Table:testแสดงขึ้นมา

TERMINAL (PuTTY)

tinnakorn=# \dt
        List of relations
 Schema | Name | Type  |  Owner
--------+------+-------+----------
 public | test | table | postgres
(1 row)

tinnakorn=#


Insert ข้อมูลลงใน Table

insert into test(column1, column2) values(value1, value2);

Output (example)
ข้อมูลของตัวอย่างนี้คือ [ column = (id, message) และ value = (1, 'test1') ]

TERMINAL (PuTTY)

tinnakorn=# insert into test(id, message) values(1, 'test1');
INSERT 0 1
tinnakorn=#


แสดงข้อมูลใน Table ทั้งหมด

select * from test;

Output (example)

TERMINAL (PuTTY)

tinnakorn=# select * from test;
 id | message
----+---------
  1 | test1
(1 row)

tinnakorn=#


ออกจาก psql

\q

สรุป

ผมได้ทำการติดตั้ง PostgreSQL ใน Amazon Linux 2 และได้ลองใช้งานดูแล้ว ก็รู้สึกว่าเป็นแอปพลิเคชันที่ดีมากๆ เพราะสามารถใช้คำสั่งของภาษา SQL ได้เกือบทั้งหมด จึงทำให้การจัดการ Database นั้นเป็นเรื่องง่าย

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

POP จากบริษัท Classmethod (Thailand) ครับ !

Link อ้างอิง

ดูรายละเอียดเพิ่มเติมได้ที่นี่ สอบถามเพิ่มเติมเกี่ยวกับ AWS คลิกที่นี่