MariaDB ใช้ไม่ได้บน Windows 10? วิธีแก้เปิดไม่ขึ้น เชื่อมต่อไม่ได้ Port 3306 ชน และ Service หยุดทำงาน
หากคุณใช้ MariaDB บน Windows 10 แล้วพบว่าเซิร์ฟเวอร์ฐานข้อมูลเปิดไม่ขึ้น เชื่อมต่อไม่ได้ ขึ้นข้อความ Can’t connect to MariaDB server, Access denied for user, พอร์ต 3306 ถูกใช้งาน หรือ MariaDB Service หยุดทำงาน ปัญหาเหล่านี้มักเกิดจากบริการฐานข้อมูล ไฟล์ตั้งค่า พอร์ตชนกัน รหัสผ่านไม่ถูกต้อง หรือไฟล์ฐานข้อมูลเสียหาย
บทความนี้รวบรวมวิธีแก้ MariaDB ใช้ไม่ได้บน Windows 10 แบบเป็นขั้นตอน เหมาะสำหรับผู้ที่ติดตั้ง MariaDB แยก หรือใช้งานร่วมกับ XAMPP, WampServer, Laragon, PHP และ phpMyAdmin พร้อมปรับรูปแบบให้อ่านง่ายสำหรับ Blogspot
MariaDB คืออะไร
MariaDB เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ที่พัฒนาต่อยอดมาจาก MySQL
สามารถนำไปใช้กับงาน เช่น
เว็บไซต์ PHP
WordPress
Laravel
ระบบสมาชิก
ร้านค้าออนไลน์
Web Application
REST API
ระบบจัดการข้อมูล
โปรแกรมภายในองค์กร
MariaDB ใช้คำสั่ง SQL และมีรูปแบบการเชื่อมต่อใกล้เคียงกับ MySQL แต่บางเวอร์ชันอาจมีฟีเจอร์และพฤติกรรมแตกต่างกัน
อาการที่พบบ่อย
MariaDB เปิดไม่ขึ้น
MariaDB Service ไม่ทำงาน
เชื่อมต่อฐานข้อมูลไม่ได้
พอร์ต 3306 ถูกใช้งาน
Access denied for user
phpMyAdmin เข้าไม่ได้
MariaDB Start แล้วหยุดทันที
เว็บไซต์เชื่อมต่อฐานข้อมูลไม่ได้
Import ฐานข้อมูลไม่สำเร็จ
Table เปิดไม่ได้
โปรแกรมแจ้ง Unknown database
MariaDB ทำงานช้าผิดปกติ
สาเหตุที่ทำให้ MariaDB มีปัญหา
สาเหตุที่พบบ่อย ได้แก่
MariaDB Service หยุดทำงาน
พอร์ต 3306 ถูก MySQL หรือโปรแกรมอื่นใช้
ไฟล์
my.iniผิดพลาดชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง
ติดตั้ง MySQL และ MariaDB พร้อมกัน
Data Directory เสียหาย
พื้นที่ว่างของไดรฟ์ไม่เพียงพอ
Firewall บล็อกการเชื่อมต่อ
สิทธิ์ของโฟลเดอร์ฐานข้อมูลไม่ถูกต้อง
เครื่องปิดหรือดับขณะกำลังเขียนข้อมูล
Antivirus กักกันไฟล์ของ MariaDB
วิธีแก้ MariaDB ใช้ไม่ได้บน Windows 10
① รีสตาร์ตคอมพิวเตอร์
รีสตาร์ต Windows ก่อนหนึ่งครั้ง
จากนั้นทดลองเปิด MariaDB ใหม่
วิธีนี้ช่วยแก้ปัญหา Service หรือพอร์ตค้างจากการปิดโปรแกรมไม่สมบูรณ์ได้ในบางกรณี
② ตรวจสอบ MariaDB Service
กด
Win + R
พิมพ์
services.msc
กด Enter
ค้นหาบริการชื่อใกล้เคียง เช่น
MariaDB
MariaDB Server
mariadb
MySQL
ตรวจสอบว่า Status เป็น
Running
หากหยุดทำงาน ให้คลิกขวาแล้วเลือก
Start
③ รีสตาร์ต MariaDB Service
หาก Service ทำงานอยู่แต่เชื่อมต่อไม่ได้
คลิกขวาที่ MariaDB Service
เลือก
Restart
จากนั้นทดลองเชื่อมต่อฐานข้อมูลใหม่
④ ตั้งค่า Startup Type เป็น Automatic
ดับเบิลคลิก MariaDB Service
ตั้งค่า
Startup type
เป็น
Automatic
เพื่อให้ MariaDB เริ่มทำงานพร้อม Windows
⑤ ตรวจสอบชื่อ Service ผ่าน Command Prompt
เปิด Command Prompt แบบผู้ดูแลระบบ
รันคำสั่ง
sc query type= service | findstr /I "MariaDB MySQL"
คำสั่งนี้ช่วยค้นหาชื่อ Service ที่เกี่ยวข้องกับ MariaDB และ MySQL ในเครื่อง
⑥ เริ่มหรือหยุด Service ผ่านคำสั่ง
หากชื่อ Service คือ MariaDB ให้ใช้
net start MariaDB
หากต้องการหยุด Service ใช้
net stop MariaDB
ควรเปลี่ยนชื่อให้ตรงกับ Service จริงในเครื่อง
⑦ ตรวจสอบพอร์ต 3306
MariaDB มักใช้พอร์ต
3306
เปิด Command Prompt แล้วรัน
netstat -ano | findstr :3306
หากพบ Process ใช้พอร์ตนี้อยู่ MariaDB อาจเปิดไม่ได้เพราะพอร์ตชนกัน
⑧ ตรวจสอบ Process ที่ใช้พอร์ต
นำหมายเลข PID ที่ได้จาก netstat ไปตรวจสอบใน Task Manager
ไปที่
Task Manager > Details
ค้นหา PID ดังกล่าว เพื่อดูว่าโปรแกรมใดใช้พอร์ต 3306
⑨ ปิด MySQL หรือ MariaDB ตัวที่ซ้ำกัน
หากติดตั้งหลายระบบพร้อมกัน เช่น
MySQL Server
MariaDB Server
XAMPP
WampServer
Laragon
อาจมีฐานข้อมูลหลายตัวพยายามใช้พอร์ตเดียวกัน
ควรเปิดใช้งานเพียงตัวเดียว หรือกำหนดพอร์ตของแต่ละตัวให้แตกต่างกัน
⑩ เปลี่ยนพอร์ต MariaDB
เปิดไฟล์
my.ini
ค้นหา
port=3306
เปลี่ยนเป็น
port=3307
จากนั้นรีสตาร์ต MariaDB
โปรแกรมที่เชื่อมต่อฐานข้อมูลต้องเปลี่ยนพอร์ตให้ตรงกันด้วย
⑪ ตรวจสอบไฟล์ my.ini
ตรวจสอบค่าหลัก เช่น
[mysqld]
port=3306
basedir="C:/Program Files/MariaDB/"
datadir="C:/Program Files/MariaDB/data/"
ตรวจสอบว่า
Path มีอยู่จริง
ใช้เครื่องหมาย Slash ถูกต้อง
ไม่มีค่าซ้ำกัน
ไม่มีบรรทัดผิดรูปแบบ
ควรสำรองไฟล์ก่อนแก้ไขทุกครั้ง
⑫ ตรวจสอบ Data Directory
โฟลเดอร์ Data เป็นตำแหน่งเก็บฐานข้อมูลทั้งหมด
ตรวจสอบว่า
โฟลเดอร์ยังอยู่
ไฟล์ไม่ถูกลบ
มีพื้นที่ว่างเพียงพอ
บัญชี Service มีสิทธิ์อ่านและเขียน
Antivirus ไม่ได้กักกันไฟล์
ไม่ควรลบไฟล์ภายใน Data Directory โดยไม่มีข้อมูลสำรอง
⑬ ตรวจสอบ MariaDB Error Log
หาก MariaDB Start แล้วหยุดทันที ให้ตรวจสอบ Error Log
ไฟล์อาจอยู่ใน Data Directory และมีชื่อ เช่น
hostname.err
หรือกำหนดตำแหน่งไว้ใน my.ini
Error Log มักระบุสาเหตุ เช่น
พอร์ตถูกใช้งาน
Permission ไม่ถูกต้อง
InnoDB เสียหาย
Config ผิด
ไดรฟ์เต็ม
ไฟล์ Log ไม่ตรงกัน
⑭ ตรวจสอบพื้นที่ว่างของไดรฟ์
MariaDB ต้องใช้พื้นที่สำหรับ
Database
Transaction Log
Temporary Table
Binary Log
Backup
Cache
หากไดรฟ์ใกล้เต็ม MariaDB อาจหยุดทำงานหรือเขียนข้อมูลไม่ได้
⑮ ทดสอบเชื่อมต่อผ่าน Command Line
เปิด Command Prompt
รัน
mariadb -u root -p
บางเวอร์ชันอาจใช้คำสั่ง
mysql -u root -p
จากนั้นใส่รหัสผ่าน
หากเชื่อมต่อได้ แสดงว่า MariaDB Server ทำงาน แต่โปรแกรมที่ใช้งานอาจตั้งค่าผิด
⑯ แก้ปัญหา mariadb is not recognized
หากเรียกคำสั่ง mariadb ไม่ได้ ให้เพิ่มโฟลเดอร์ bin ของ MariaDB ลงใน PATH
ตัวอย่าง
C:\Program Files\MariaDB\bin
หลังเพิ่ม PATH ให้ปิดและเปิด Command Prompt ใหม่
⑰ ตรวจสอบตำแหน่งของคำสั่ง
รัน
where mariadb
และ
where mysql
หากพบหลายตำแหน่ง อาจมี Client หลายเวอร์ชันในเครื่อง
ควรจัดลำดับ PATH ให้เวอร์ชันที่ต้องการอยู่ด้านบน
⑱ แก้ Access denied for user
ข้อความ
Access denied for user
มักเกิดจาก
Username ผิด
Password ผิด
Host ไม่ตรง
ผู้ใช้ไม่มีสิทธิ์
Authentication Method ไม่ตรงกับ Client
ควรตรวจสอบชื่อผู้ใช้ รหัสผ่าน และ Host ก่อนแก้ไขสิทธิ์
⑲ ตรวจสอบ Host ของผู้ใช้
บัญชีเหล่านี้อาจมีสิทธิ์ต่างกัน
root@localhost
root@127.0.0.1
user@%
ควรตรวจสอบว่าโปรแกรมกำลังเชื่อมต่อด้วย Host ใด และมีบัญชีตรงกับ Host ดังกล่าวหรือไม่
⑳ ตรวจสอบไฟล์ตั้งค่าของเว็บไซต์
หากเว็บไซต์เชื่อมต่อ MariaDB ไม่ได้ ให้ตรวจสอบไฟล์ เช่น
.envwp-config.phpconfig.phpdatabase.php
ตัวอย่างค่า
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=root
DB_PASSWORD=
ค่าทั้งหมดต้องตรงกับ MariaDB ที่กำลังทำงาน
㉑ ตรวจสอบ phpMyAdmin
หาก phpMyAdmin เปิดได้แต่เข้าสู่ระบบไม่ได้ ให้ตรวจสอบ
config.inc.php
รวมถึงค่า
Host
Port
Username
Password
Authentication Type
หาก MariaDB เปลี่ยนพอร์ต phpMyAdmin ต้องเปลี่ยนตามด้วย
㉒ ทดลองใช้ 127.0.0.1 แทน localhost
ในบางระบบ localhost อาจใช้วิธีเชื่อมต่อแตกต่างจาก 127.0.0.1
ทดลองตั้ง Host เป็น
127.0.0.1
แล้วเชื่อมต่อใหม่
㉓ ตรวจสอบ Bind Address
ใน my.ini อาจมีค่า
bind-address=127.0.0.1
ค่าดังกล่าวอนุญาตให้เชื่อมต่อจากเครื่องเดียวกันเท่านั้น
หากต้องการเชื่อมต่อจากเครื่องอื่น ต้องกำหนดค่าตามโครงสร้างเครือข่ายและจำกัดสิทธิ์อย่างรัดกุม
㉔ ตรวจสอบ Windows Firewall
หากเชื่อมต่อจากเครื่องอื่นไม่ได้ ให้ตรวจสอบ Windows Firewall
อนุญาตเฉพาะพอร์ตและเครือข่ายที่จำเป็น
ไม่ควรเปิดพอร์ตฐานข้อมูลสู่เครือข่ายสาธารณะโดยไม่มีระบบป้องกัน
㉕ ตรวจสอบ Antivirus
Antivirus อาจบล็อกไฟล์ เช่น
mariadbd.exemysqld.exeClient Tools
Data Files
Log Files
ตรวจสอบประวัติการกักกัน และอนุญาตเฉพาะไฟล์ที่ยืนยันว่าเป็นไฟล์ของ MariaDB จริง
㉖ ตรวจสอบ Permission ของโฟลเดอร์
บัญชี Windows ที่ MariaDB Service ใช้งานต้องมีสิทธิ์อ่านและเขียนในโฟลเดอร์
Data
Log
Temp
Backup
หากย้าย Data Directory ไปยังไดรฟ์อื่น ควรกำหนด Permission ใหม่
㉗ ตรวจสอบไฟล์ InnoDB
หาก Error Log แจ้งปัญหา InnoDB ควรหยุด MariaDB และสำรอง Data Directory ก่อนแก้ไข
ไฟล์สำคัญอาจประกอบด้วย
ibdata1
ib_logfile0
ib_logfile1
undo files
ไม่ควรลบไฟล์เหล่านี้ทันที เพราะอาจทำให้ฐานข้อมูลเสียหายถาวร
㉘ ตรวจสอบ Table ที่เสียหาย
สามารถตรวจสอบ Table ด้วยคำสั่ง
CHECK TABLE ชื่อตาราง;
Table บางประเภทอาจรองรับคำสั่ง
REPAIR TABLE ชื่อตาราง;
แต่ไม่ใช่ทุก Storage Engine ที่สามารถ Repair ด้วยคำสั่งนี้ได้
ควรสำรองฐานข้อมูลก่อนดำเนินการ
㉙ ตรวจสอบฐานข้อมูลด้วย mariadb-check
ตัวอย่างคำสั่ง
mariadb-check -u root -p --all-databases
บางระบบอาจใช้
mysqlcheck -u root -p --all-databases
ควรทำในช่วงที่ระบบไม่มีการใช้งานหนัก และมี Backup พร้อมใช้งาน
㉚ Import ฐานข้อมูลผ่าน Command Line
ตัวอย่าง
mariadb -u root -p ชื่อฐานข้อมูล < backup.sql
หาก Client ใช้ชื่อ mysql ให้ใช้
mysql -u root -p ชื่อฐานข้อมูล < backup.sql
ควรสร้างฐานข้อมูลปลายทางก่อนเริ่ม Import
㉛ Export ฐานข้อมูลด้วย mariadb-dump
ตัวอย่าง
mariadb-dump -u root -p ชื่อฐานข้อมูล > backup.sql
บางเวอร์ชันอาจใช้
mysqldump -u root -p ชื่อฐานข้อมูล > backup.sql
หลัง Export ควรตรวจสอบว่าไฟล์มีขนาดสมเหตุสมผลและสามารถเปิดอ่านได้
㉜ แก้ Import ไฟล์ใหญ่ไม่ผ่าน
ตรวจสอบค่าใน my.ini เช่น
max_allowed_packet=64M
อาจต้องปรับเพิ่มตามขนาดข้อมูล
หลังแก้ไขต้องรีสตาร์ต MariaDB
ไม่ควรเพิ่มค่าสูงเกินความจำเป็นโดยไม่วิเคราะห์ Error ก่อน
㉝ ตรวจสอบ Character Set
หากภาษาไทยแสดงผิด ควรใช้ Character Set ที่รองรับ Unicode เช่น
utf8mb4
ตรวจสอบทั้ง
Database
Table
Column
Client Connection
ไฟล์ SQL
เพื่อให้การเข้ารหัสตรงกัน
㉞ ตรวจสอบ SQL Mode
ตรวจสอบด้วย
SELECT @@sql_mode;
โปรเจกต์เก่าอาจมี Query ที่ไม่รองรับ SQL Mode แบบเข้มงวด
ควรแก้ Query และโครงสร้างข้อมูลให้ถูกต้องก่อนปิดโหมดตรวจสอบ
㉟ ตรวจสอบจำนวน Connection
หากขึ้น
Too many connections
ตรวจสอบค่า
SHOW VARIABLES LIKE 'max_connections';
และตรวจสอบ Process ด้วย
SHOW PROCESSLIST;
ควรแก้แอปพลิเคชันที่เปิด Connection ค้างก่อนเพิ่ม Limit
㊱ ตรวจสอบ Query ที่ทำงานช้า
หาก MariaDB ทำงานช้า ให้ตรวจสอบ
Index
Query
Table Size
Slow Query Log
RAM
Storage
Connection Pool
ควรวิเคราะห์ Query ก่อนเพิ่มทรัพยากรเครื่อง
㊲ ปิด MariaDB อย่างถูกต้อง
ควรหยุด MariaDB ผ่าน
Windows Services
XAMPP Control Panel
Laragon
WampServer
คำสั่ง
net stop
หลีกเลี่ยงการปิดเครื่องขณะฐานข้อมูลกำลัง Import, Backup หรือเขียนข้อมูลจำนวนมาก
㊳ สำรองข้อมูลก่อนอัปเดต
ก่อนอัปเดต MariaDB ควรสำรอง
ฐานข้อมูลทั้งหมด
User และ Privilege
ไฟล์
my.iniData Directory
Application Config
Stored Procedure และ Trigger
ควรทดสอบการอัปเกรดในเครื่องพัฒนาก่อนระบบจริง
㊴ ติดตั้ง MariaDB ใหม่
หากไฟล์โปรแกรมเสียหายและซ่อมไม่ได้ อาจถอนและติดตั้งใหม่
ก่อนถอนต้องสำรอง
Database
SQL Dump
Data Directory
Config
User
Permission
ไม่ควรถอนโปรแกรมก่อนยืนยันว่า Backup สามารถใช้งานได้
㊵ อัปเดต Windows
ติดตั้ง Windows Update ที่จำเป็น
จากนั้นรีสตาร์ตเครื่องแล้วทดสอบ MariaDB ใหม่
㊶ ซ่อมไฟล์ระบบ Windows
เปิด Command Prompt แบบผู้ดูแลระบบ
รัน
sfc /scannow
จากนั้นรัน
DISM /Online /Cleanup-Image /RestoreHealth
เมื่อเสร็จแล้วให้รีสตาร์ต Windows
วิธีแก้ Error ที่พบบ่อยใน MariaDB
Can’t connect to MariaDB server
ตรวจสอบว่า Service ทำงานอยู่ Host และ Port ถูกต้อง และไม่มี Firewall บล็อกการเชื่อมต่อ
Access denied for user
ตรวจสอบ Username, Password, Host และ Privilege ของผู้ใช้
Port 3306 already in use
ตรวจสอบพอร์ตด้วย
netstat -ano | findstr :3306
จากนั้นหยุดโปรแกรมที่ใช้พอร์ต หรือเปลี่ยน MariaDB ไปใช้พอร์ตอื่น
MariaDB shutdown unexpectedly
ตรวจสอบ Error Log, พื้นที่ว่างของไดรฟ์, InnoDB, Permission และเหตุการณ์ก่อนเครื่องปิดครั้งล่าสุด
Unknown database
ชื่อฐานข้อมูลใน Config ไม่ตรงกับฐานข้อมูลจริง หรือฐานข้อมูลยังไม่ได้สร้าง
Table doesn’t exist
ตรวจสอบ Database ที่เลือก ชื่อ Table ตัวพิมพ์เล็ก-ใหญ่ และความสมบูรณ์ของไฟล์ Import
Too many connections
ตรวจสอบ Connection ที่เปิดค้างด้วย SHOW PROCESSLIST และแก้ระบบ Connection Pool ของแอปพลิเคชัน
Server has gone away
อาจเกิดจาก Timeout, Packet ใหญ่, Query ใช้เวลานาน หรือ MariaDB รีสตาร์ตระหว่างทำงาน
วิธีป้องกันปัญหา MariaDB
สำรองฐานข้อมูลเป็นประจำ
ตรวจสอบ Error Log เมื่อ Service หยุดทำงาน
ใช้ฐานข้อมูลเพียงหนึ่งตัวต่อหนึ่งพอร์ต
ไม่ลบไฟล์ใน Data Directory โดยตรง
เว้นพื้นที่ว่างของไดรฟ์ให้เพียงพอ
จำกัดการเปิดพอร์ตฐานข้อมูล
ใช้รหัสผ่านที่คาดเดายาก
ตรวจสอบ Query และ Index เป็นระยะ
ปิด MariaDB อย่างถูกวิธี
ทดสอบการอัปเดตก่อนใช้กับระบบจริง
คำถามที่พบบ่อย (FAQ)
MariaDB กับ MySQL ต่างกันอย่างไร
MariaDB พัฒนาต่อยอดจาก MySQL และยังรองรับคำสั่งจำนวนมากร่วมกัน แต่มีฟีเจอร์ Storage Engine และพฤติกรรมบางส่วนแตกต่างกัน จึงควรตรวจสอบความเข้ากันได้ก่อนย้ายระบบ
ใช้ MariaDB กับ WordPress ได้หรือไม่
โดยทั่วไปสามารถใช้งานได้ แต่ควรเลือกเวอร์ชันที่รองรับกับ WordPress, PHP และ Plugin ที่ใช้งาน
เปลี่ยนพอร์ต MariaDB ได้หรือไม่
เปลี่ยนได้ แต่ต้องแก้พอร์ตใน my.ini และในเว็บไซต์หรือโปรแกรมทุกตัวที่เชื่อมต่อฐานข้อมูล
ทำไม XAMPP เปิด MariaDB ไม่ได้
สาเหตุที่พบบ่อยคือพอร์ต 3306 ชนกับ MySQL หรือ MariaDB ตัวอื่น รวมถึงไฟล์ฐานข้อมูลเสียหายจากการปิดเครื่องไม่สมบูรณ์
MariaDB ใช้งานฟรีหรือไม่
MariaDB Community Server เป็นซอฟต์แวร์โอเพนซอร์สและใช้งานได้ฟรี ส่วนบริการหรือผลิตภัณฑ์ระดับองค์กรบางประเภทอาจมีค่าใช้จ่าย
สรุป
ปัญหา MariaDB ใช้ไม่ได้บน Windows 10 ส่วนใหญ่มาจาก MariaDB Service หยุดทำงาน พอร์ต 3306 ชนกับ MySQL ตัวอื่น ค่า Username หรือ Password ผิด ไฟล์ my.ini ไม่ถูกต้อง หรือ Data Directory มีปัญหา ควรเริ่มจากตรวจสอบ Service, Port, Error Log และทดลองเชื่อมต่อผ่าน Command Line ตามลำดับ
ทีม comsiam แนะนำให้สำรองฐานข้อมูลก่อนแก้ไข my.ini, Data Directory หรือไฟล์ InnoDB ทุกครั้ง เพราะการลบหรือเปลี่ยนไฟล์ผิดอาจทำให้ข้อมูลเสียหายถาวร นอกจากนี้ comsiam ยังแนะนำให้ตรวจสอบ Error Log เป็นอันดับแรกเมื่อ MariaDB เปิดไม่ขึ้น เพราะมักระบุสาเหตุที่แท้จริงได้รวดเร็วกว่าการถอนและติดตั้งใหม่