คู่มือติดตั้ง MariaDB เวอร์ชันล่าสุด (10.4+) บน CentOS 7, การตั้งค่าความปลอดภัย, ไฟล์ตั้งค่า my.cnf และการปรับแต่งประสิทธิภาพด้วย Tuning Scripts
1. ติดตั้ง MariaDB จาก Repository Official
yum install nano -y
nano /etc/yum.repos.d/mariadb.repo
# ใส่:
[mariadb]
name = MariaDB
baseurl = https://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
yum --disablerepo=AppStream install MariaDB-server MariaDB-client -y
systemctl start mariadb
systemctl enable mariadb
2. Secure Installation
/usr/bin/mysql_secure_installation
# ตั้ง Root Password, ลบ Anonymous Users, Disallow Remote Root, Remove Test DB, Reload Privileges
Firewall: iptables -I INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT; iptables-save > /etc/sysconfig/iptables
3. ไฟล์ตั้งค่า my.cnf (/etc/my.cnf) – ตัวอย่างสำหรับ General Purpose
[mysqld]
local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
max_allowed_packet = 128M
sql_mode = ""
log-error = /var/log/mysql-error.log
# Cache
query_cache_size = 16M
table_open_cache = 4096
thread_cache_size = 16
key_buffer_size = 8M
thread_stack = 256K
join_buffer_size = 2M
sort_buffer_size = 2M
# Temp Tables
tmpdir = /tmp
max_heap_table_size = 32M
tmp_table_size = 32M
# InnoDB
innodb_file_per_table = 1
innodb_buffer_pool_size = 32M # ตั้ง 70-80% RAM หาก Server ให้บริการ DB หลัก
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_use_native_aio = 0
transaction-isolation = READ-COMMITTED
character-set-server = utf8
collation-server = utf8_unicode_ci
init-connect = "SET NAMES utf8 COLLATE utf8_unicode_ci"
skip-name-resolve
[mysqldump]
quick
quote-names
max_allowed_packet = 128M
default-character-set = utf8
[mysql]
[isamchk]
key_buffer = 16M
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
พารามิเตอร์สำคัญ:
- innodb_buffer_pool_size – สำคัญที่สุด สำหรับ InnoDB ตั้ง 70-80% RAM
- innodb_flush_log_at_trx_commit – 2 = สมดุลระหว่างความเร็วและความปลอดภัย (1 = ปลอดภัยสุด, 0 = เร็วสุด)
- skip-name-resolve – ปิด DNS Lookup เร็วขึ้น
- max_connections – ปรับตามจำนวน Connection พร้อมกัน
4. Performance Tuning ด้วย Tuning-Primer.sh
yum install bc net-tools -y
wget https://launchpadlibrarian.net/78745738/tuning-primer.sh
chmod +x tuning-primer.sh
./tuning-primer.sh
Script จะวิเคราะห์และแนะนำการปรับพารามิเตอร์ (Highlight สีแดง = ควรแก้) ควรรันหลัง Server ทำงานจริง ≥ 48 ชั่วโมง
5. Slow Query Log
เพิ่มใน [mysqld]:
slow_query_log = 1
long_query_time = 5
slow_query_log_file = /var/log/slow-query.log
log_queries_not_using_indexes = 1
สร้างไฟล์ Log และ Restart: touch /var/log/slow-query.log; systemctl restart mariadb
ดู Log: tail -f /var/log/slow-query.log
6. คำสั่ง MariaDB Shell พื้นฐาน
mysql -u root -p # Local
mysql -u root -p -h 192.168.1.20 # Remote
CREATE DATABASE db1;
SHOW DATABASES;
USE db1;
SHOW TABLES;
CREATE USER 'app'@'localhost' IDENTIFIED BY 'StrongPass';
GRANT ALL PRIVILEGES ON db1.* TO 'app'@'localhost';
FLUSH PRIVILEGES;
SHOW PROCESSLIST;
SHOW VARIABLES LIKE 'max_error_count';
SET GLOBAL max_error_count = 256;
ตรวจสอบ Config หลังแก้ไข: systemctl status mariadb -l