การติดตั้ง MariaDB บน Amazon Linux 2023

แนะนำการติดตั้ง MariaDB บน Amazon Linux 2023 และทดสอบการจัดการ Database ใน MariaDB Server

สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ

เคยใช้งาน MariaDB บน Amazon Linux 2023 กันบ้างไหมครับ?
เนื่องจาก Amazon Linux 2023 (AL2023) เปิดตัวมา ผมจึงต้องการอัปเดต OS ของ Instance ที่ใช้สำหรับจัดการ MariaDB แน่นอนว่าไม่สามารถทำขั้นตอนเดียวกับ Amazon Linux 2 ได้ ครั้งนี้จึงอยากจะมาแนะนำวิธีการติดตั้ง MariaDB บน AL2023 ครับ

หากสนใจวิธีการติดตั้ง MariaDB บน Amazon Linux 2 ดูรายละเอียดได้ที่ลิงก์ด้านล่างนี้ครับ
การติดตั้ง MySQL (MariaDB) และสร้าง Database ใน Amazon Linux 2

MariaDB คืออะไร

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

สิ่งที่ต้องเตรียม

※EC2 Instance สำหรับติดตั้ง MariaDB

ดูรายละเอียดเกี่ยวกับวิธีการเปิดใช้งาน Amazon Linux 2023 ได้ที่ลิงก์ด้านล่างนี้ครับ

ติดตั้ง MariaDB

การติดตั้ง MariaDB นี้จะรันคำสั่งใน PuTTY ดังนั้นให้ทำการเชื่อมต่อกับ EC2 Instance ด้วย PuTTY หากเชื่อมต่อเตรียมไว้แล้ว เริ่มดำเนินการรันคำสั่งได้เลยครับ

รันคำสั่งเข้าสู่ระบบในฐานะผู้ใช้ที่มีสิทธิ์ root

sudo su -


รันคำสั่ง Update server ให้เป็นปัจจุบัน

yum update -y


รันคำสั่งการติดตั้งและอัปเดตเซิร์ฟเวอร์ MariaDB เวอร์ชัน 10.5 บนระบบปฏิบัติการที่เราใช้งาน (ครั้งนี้ติดตั้งบน Amazon Linux 2023)

yum install mariadb105-server -y


รันคำสั่งตรวจสอบเวอร์ชัน MySQL ที่ติดตั้ง (ครั้งนี้คือ MariaDB)

mysql --version


รันคำสั่งแก้ไขไฟล์ mariadb.cnf (กรณีนี้เป็นการสร้างไฟล์ใหม่)

vi /etc/my.cnf.d/mariadb.cnf


เมื่อรันคำสั่งแล้วจะแสดงหน้าจอตามรูปภาพด้านล่าง
แล้วกดปุ่ม i เพื่อให้แสดง -- INSERT -- ที่ด้านล่างซ้ายสุด แล้วเพิ่มสิ่งนี้ลงไป
※การตั้งค่านี้จะทำให้ตัว Server สามารถทำงานกับตัวอักษรที่เข้ารหัสด้วย utf-8 ที่มีความยาวตั้งแต่ 1 - 4 byte ได้

[mysqld]
character-set-server=utf8mb4

[client]
default-character-set=utf8mb4

เมื่อเพิ่มเสร็จแล้ว ให้บันทึกและออกจากไฟล์ตามด้านล่างนี้
» กดปุ่ม Esc
» พิมพ์ :wq หรือ :x + Enter

แล้วรันคำสั่งเริ่มการทำงาน MariaDB

systemctl start mariadb


รันคำสั่งตรวจสอบสถานะ MariaDB
ถ้าแสดง Active: active (running) แบบนี้ หมายถึง MariaDB กำลังทำงานอยู่ครับ

systemctl status mariadb

Output (example)

root@ip-172-31-11-165:~

[root@ip-172-31-11-165 ~]# systemctl status mariadb
● mariadb.service - MariaDB 10.5 database server
     Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; preset: disabled)
     Active: active (running) since Fri 2023-08-18 04:11:38 UTC; 20s ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
    Process: 3167 ExecStartPre=/usr/libexec/mariadb-check-socket (code=exited, status=0/SUCCESS)
    Process: 3189 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
    Process: 3239 ExecStartPost=/usr/libexec/mariadb-check-upgrade (code=exited, status=0/SUCCESS)
   Main PID: 3224 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 14 (limit: 1066)
     Memory: 83.2M
        CPU: 240ms
     CGroup: /system.slice/mariadb.service
             └─3224 /usr/libexec/mariadbd --basedir=/usr

Aug 18 04:11:37 ip-172-31-11-165.ap-southeast-1.compute.internal systemd[1]: Starting mariadb.service - MariaDB 10.5 database server...
Aug 18 04:11:37 ip-172-31-11-165.ap-southeast-1.compute.internal mariadb-prepare-db-dir[3189]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done.
Aug 18 04:11:37 ip-172-31-11-165.ap-southeast-1.compute.internal mariadb-prepare-db-dir[3189]: If this is not the case, make sure the /var/lib/mysql is empty before running mariadb-prepare>
Aug 18 04:11:37 ip-172-31-11-165.ap-southeast-1.compute.internal mariadbd[3224]: 2023-08-18  4:11:37 0 [Note] /usr/libexec/mariadbd (mysqld 10.5.18-MariaDB) starting as process 3224 ...
Aug 18 04:11:38 ip-172-31-11-165.ap-southeast-1.compute.internal systemd[1]: Started mariadb.service - MariaDB 10.5 database server.
lines 1-21/21 (END)


รันคำสั่งเปิดใช้งาน MariaDB

systemctl enable mariadb

Output (example)

root@ip-172-31-11-165:~

[root@ip-172-31-11-165 ~]# systemctl enable mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
[root@ip-172-31-11-165 ~]#

เมื่อทำการตั้งค่านี้จะทำให้ MariaDB เริ่มทำงานโดยอัตโนมัติหลังจากที่มีการรีสตาร์ท Linux หรือ Stop/Start EC2 ครับ

ทดสอบการจัดการ Database

เชื่อมต่อ MariaDB

รันคำสั่งเชื่อมต่อกับฐานข้อมูล MariaDB

mysql -u root -h localhost

Output (example)

root@ip-172-31-11-165:~

[root@ip-172-31-3-70 ~]# mysql -u root -h localhost
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.18-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

สร้าง Database

ผมจะทดสอบสร้าง Database ในฐานข้อมูล MariaDB โดยรันคำสั่งต่อไปนี้

ก่อนอื่นรันคำสั่งเรียกดูข้อมูลใน Database

show databases;

Output (example) จะเห็นว่ามี Database เริ่มต้นของ MariaDB Server แสดงแบบนี้

root@ip-172-31-11-165:~

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.001 sec)

MariaDB [(none)]>


รันคำสั่งสร้าง Database โดยเปลี่ยน database_name เป็นชื่อ Database ที่ต้องการ (ตัวอย่างนี้ใช้ชื่อ tinnakorn)

CREATE DATABASE database_name;

Output (example)

root@ip-172-31-11-165:~

MariaDB [(none)]> CREATE DATABASE tinnakorn;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]>


รันเรียกดูข้อมูลใน Database อีกครั้ง

show databases;

Output (example) จะเห็นว่ามี Database ที่ชื่อ tinnakorn เพิ่มขึ้นมาแล้ว

root@ip-172-31-11-165:~

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| tinnakorn          |
+--------------------+
4 rows in set (0.000 sec)

MariaDB [(none)]>

สร้าง Table

ผมจะทำการสร้าง Table ใน Database ที่ชื่อ tinnakorn ที่สร้างจากขั้นตอนที่แล้ว

ก่อนอื่นรันคำสั่งเปลี่ยนฐานข้อมูลไปยัง Database ที่เราสร้างขึ้นมา เช่น tinnakorn (เปลี่ยน "database_name" เป็นชื่อ DB ที่สร้างจากขั้นตอนที่แล้ว)

use database_name;

Output (example)

root@ip-172-31-11-165:~

MariaDB [(none)]> use tinnakorn;
Database changed
MariaDB [tinnakorn]>


รันคำสั่งสร้าง Table โดยเปลี่ยน table_name เป็นชื่อ Table ที่ต้องการ (ตัวอย่างนี้ใช้ชื่อ test)

create table table_name (id int, name varchar(30));

Output (example)

root@ip-172-31-11-165:~

MariaDB [tinnakorn]> create table test (id int, name varchar(30));
Query OK, 0 rows affected (0.006 sec)

MariaDB [tinnakorn]>


รันคำสั่งเพิ่มข้อมูลลงในตารางของฐานข้อมูล โดยเปลี่ยน table_name เป็นชื่อ Table ที่สร้างจากขั้นตอนที่แล้ว (ตัวอย่างนี้จะเพิ่มข้อมูลลงใน Table ที่ชื่อ test)

insert into table_name value (1, 'test');

Output (example)

root@ip-172-31-11-165:~

MariaDB [tinnakorn]> insert into test value (1, 'test');
Query OK, 1 row affected (0.001 sec)

MariaDB [tinnakorn]>


รันคำสั่งแสดงข้อมูลในตาราง โดยเปลี่ยน table_name เป็นชื่อ Table ที่สร้างเมื่อสักครู่นี้ (ตัวอย่างนี้จะแสดงข้อมูลของ Table ที่ชื่อ test)

select * from table_name;

Output (example) จะเห็นว่ามีข้อมูลแสดงขึ้นมาตามที่ Insert จากขั้นตอนที่แล้ว

root@ip-172-31-11-165:~

MariaDB [tinnakorn]> select * from test;
+------+------+
| id   | name |
+------+------+
|    1 | test |
+------+------+
1 row in set (0.000 sec)

MariaDB [tinnakorn]>


รันคำสั่งออกจากการเชื่อมต่อกับฐานข้อมูล MariaDB

quit

Output (example)

root@ip-172-31-11-165:~

MariaDB [tinnakorn]> quit
Bye
[root@ip-172-31-11-165 ~]#

สรุป

เราสามารถติดตั้ง MariaDB บน Amazon Linux 2023 เพื่อใช้ MariaDB Server ในการจัดการฐานข้อมูล และใช้ MariaDB Client ในการเชื่อมต่อไปยังฐานข้อมูลอื่นๆ ได้ เช่น RDS เป็นต้น

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

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

บทความที่เกี่ยวข้อง