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