ติดตั้ง MariaDB และตั้งค่าฐานข้อมูลสำหรับ Production (Rocky Linux 9)

ติดตั้ง MariaDB และตั้งค่าฐานข้อมูลสำหรับ Production (Rocky Linux 9)

หลายระบบพัง…ไม่ใช่เพราะ Code แต่เพราะ “Database ตั้งค่าไม่เหมาะกับ Production”

MariaDB ติดตั้งง่ายก็จริง แต่ถ้าปล่อย default = เสี่ยงทั้ง Performance + Security

บทความนี้จะพาคุณตั้งค่า MariaDB แบบ พร้อมใช้งานจริงใน Production เน้น ปลอดภัย + เสถียร + ปรับแต่งได้


ในบทความนี้คุณจะได้เรียนรู้

  • ติดตั้ง MariaDB บน Rocky Linux 9
  • Secure database (ขั้นตอนสำคัญมาก)
  • ตั้งค่า config สำหรับ Production
  • สร้าง Database / User อย่างถูกต้อง
  • ทดสอบการใช้งานจริง

ก่อนเริ่ม ต้องมี

  • OS: Rocky Linux 9
  • User ที่มี sudo privileges
  • เปิด firewall (⚠️ ห้ามปิด)
  • RAM อย่างน้อย 1GB (Production แนะนำ 2GB+)

 1. ติดตั้ง MariaDB

# อัปเดตระบบ
sudo dnf update -y

# ติดตั้ง MariaDB Server
sudo dnf install mariadb-server -y

# ตรวจสอบ version

mariadb –version

2. Start และ Enable Service

# เริ่ม service
sudo systemctl start mariadb

# ตั้งให้รันตอน boot
sudo systemctl enable mariadb

# ตรวจสอบสถานะ
sudo systemctl status mariadb


3. Secure MariaDB (สำคัญมาก)

sudo mysql_secure_installation

-ระบบจะถาม

คำถาม คำตอบแนะนำ
Set root password Y
Remove anonymous users Y
Disallow root login remotely Y
Remove test database Y
Reload privilege tables Y

👉 ขั้นตอนนี้ช่วยปิดช่องโหว่พื้นฐาน


4. ตั้งค่า Firewall

# เปิดเฉพาะเครื่องภายใน (แนะนำ)
sudo firewall-cmd –permanent –add-service=mysql
sudo firewall-cmd –reload

⚠️ Production จริง ควรจำกัด IP

sudo firewall-cmd –permanent –add-rich-rule=‘rule family=”ipv4″ source address=”192.168.1.10″ service name=”mysql” accept’
sudo firewall-cmd –reload

5. ปรับแต่ง MariaDB สำหรับ Production

– ไฟล์ config

sudo nano /etc/my.cnf.d/mariadb-server.cnf

ค่าแนะนำ (Server RAM 2–4GB)

[mysqld]
# จำกัด connection
max_connections = 100

# Buffer Pool (70% ของ RAM โดยประมาณ)
innodb_buffer_pool_size = 1G

# Log เพื่อ debug
log_error = /var/log/mariadb/mariadb.log

# ปิด DNS lookup ลด latency
skip-name-resolve

# ป้องกัน query cache ปัญหาใน workload ใหม่
query_cache_type = 0
query_cache_size = 0

# InnoDB tuning
innodb_log_file_size = 256M
innodb_flush_method = O_DIRECT

# Slow query log
slow_query_log = 1
slow_query_log_file = /var/log/mariadb/slow.log
long_query_time = 2


Restart Service

sudo systemctl restart mariadb

6. สร้าง Database และ User 

– เข้า MariaDB

sudo mysql -u root -p

✳️ สร้าง Database

CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

👤 สร้าง User (ห้ามใช้ root)

CREATE USER ‘app_user’@‘localhost’ IDENTIFIED BY ‘StrongPassword123!’;

🔑 กำหนดสิทธิ์

GRANT ALL PRIVILEGES ON app_db.* TO ‘app_user’@‘localhost’;
FLUSH PRIVILEGES;

7. ทดสอบการเชื่อมต่อ

mysql -u app_user -p -D app_db

– ลองสร้าง table

CREATE TABLE test (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100)
);

 8. ตรวจสอบ Log และ Performance

– ตรสจสอบ error log

sudo tail -f /var/log/mariadb/mariadb.log

–  ตรวจสอบ slow query

sudo tail -f /var/log/mariadb/slow.log
 

⚠️ ข้อควรระวัง (Production จริง)

  • ❌ ห้ามใช้ root กับ application
  • ❌ ห้ามเปิด 0.0.0.0 โดยไม่จำกัด IP
  • ❌ ห้ามปิด firewall
  • ✅ ใช้ strong password
  • ✅ backup สม่ำเสมอ (mysqldump / xtrabackup)
  • ✅ monitor ด้วย Prometheus + Grafana

สรุป

MariaDB สำหรับ Production ไม่ใช่แค่ “ติดตั้งแล้วจบ”

คุณต้อง

  • Secure (mysql_secure_installation)
  • Tune config ให้เหมาะกับ RAM
  • แยก user / privilege
  • เปิด log เพื่อตรวจสอบ
  • ควบคุม firewall

👉 ถ้าทำครบ ระบบจะ เสถียร + ปลอดภัย + รองรับโหลดจริงได้