ข้อความแสดงข้อผิดพลาด **"ข้อผิดพลาด: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL บน 'localhost' (10061)"** หมายความว่าไคลเอ็นต์ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL สาเหตุปกติมีดังนี้:
1. **บริการ MySQL ยังไม่เริ่ม**
- เซิร์ฟเวอร์ MySQL อาจไม่สามารถเริ่มทำงานได้ ใน Windows คุณสามารถเปิดตัวจัดการบริการ ค้นหาบริการ `MySQL` และเริ่มต้นด้วยตนเอง ใน Linux คุณสามารถตรวจสอบว่า MySQL กำลังทำงานอยู่หรือไม่โดยใช้คำสั่งต่อไปนี้:
``` ทุบตี
sudo systemctl สถานะ mysql # Ubuntu / Debian
sudo systemctl สถานะ mysqld # CentOS/Fedora
-
2. **หมายเลขพอร์ตไม่ถูกต้อง**
- ตามค่าเริ่มต้น เซิร์ฟเวอร์ MySQL จะใช้พอร์ต **3306** หากหมายเลขพอร์ตในไฟล์กำหนดค่ามีการเปลี่ยนแปลง ไคลเอ็นต์อาจไม่สามารถเชื่อมต่อได้
- คุณสามารถตรวจสอบการตั้งค่าหมายเลขพอร์ตได้ในไฟล์กำหนดค่า MySQL (เช่น `my.cnf` หรือ `my.ini`) เพื่อให้แน่ใจว่าไคลเอนต์เชื่อมต่อกับพอร์ตที่ถูกต้อง
3. **ไฟร์วอลล์บล็อกการเชื่อมต่อ**
- ไฟร์วอลล์ในเครื่องอาจบล็อกพอร์ต MySQL หากไฟร์วอลล์มีกฎที่เปิดใช้งานเพื่อบล็อกพอร์ต 3306 คุณสามารถปิดใช้งานไฟร์วอลล์ชั่วคราวหรือเปิดพอร์ตได้ คุณสามารถเปิดพอร์ต 3306 บน Linux ได้โดยใช้คำสั่งต่อไปนี้:
``` ทุบตี
sudo ufw อนุญาต 3306 # ตัวอย่างไฟร์วอลล์ Ubuntu
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent # CentOS/Fedora
sudo firewall-cmd --reload # โหลดไฟร์วอลล์ใหม่
-
4. **ปัญหาการกำหนดค่าที่อยู่การผูก**
- ในไฟล์การกำหนดค่า MySQL การตั้งค่า `bind-address` อาจอนุญาตเฉพาะการเชื่อมต่อระยะไกลหรือผูกกับที่อยู่ IP ที่ระบุเท่านั้น ตรวจสอบให้แน่ใจว่า `bind-address` ในไฟล์กำหนดค่าตั้งค่าเป็น `127.0.0.1` หรือ `localhost` เพื่ออนุญาตการเชื่อมต่อในเครื่อง
5. **ไฟล์ซ็อกเก็ตหายไปหรือเส้นทางไม่ถูกต้อง**
- ในบางระบบ MySQL ใช้ไฟล์ Unix Socket สำหรับการเชื่อมต่อ ตรวจสอบให้แน่ใจว่าเส้นทาง "ซ็อกเก็ต" ในไฟล์กำหนดค่าถูกต้องและมีไฟล์อยู่จริง ตามค่าเริ่มต้น ไฟล์นี้มักจะอยู่ที่ `/var/run/mysqld/mysqld.sock` หรือเส้นทางที่คล้ายกัน
6. ** ปัญหาการอนุญาตของผู้ใช้ **
- อาจเป็นไปไม่ได้ที่จะเชื่อมต่อหากผู้ใช้ที่เชื่อมต่อไม่มีสิทธิ์ที่เหมาะสม ตรวจสอบให้แน่ใจว่าการอนุญาตของผู้ใช้ `localhost` นั้นถูกต้อง คุณสามารถลองให้สิทธิ์อีกครั้งโดยใช้คำสั่งต่อไปนี้:
``` sql
ให้สิทธิ์ทั้งหมดบน *.* ให้กับ 'ชื่อผู้ใช้'@'localhost' ที่ระบุโดย 'รหัสผ่าน';
สิทธิ์ล้าง;
-
สรุปแนวคิดในการแก้ปัญหา
ตรวจสอบสถานะบริการ MySQL การตั้งค่าพอร์ต กฎไฟร์วอลล์ ที่อยู่การเชื่อมโยง ไฟล์ซ็อกเก็ต และการอนุญาตผู้ใช้ เพื่อให้แน่ใจว่าการกำหนดค่า MySQL และการตั้งค่าเซิร์ฟเวอร์ถูกต้อง