Remote MySQL คืออะไร ใช้ทำอะไร
โดยปกติ MySQL บน Shared Hosting อนุญาตให้เชื่อมต่อจาก "localhost" เท่านั้น คือเฉพาะเว็บที่อยู่บน Server เดียวกัน Remote MySQL คือการอนุญาตให้เครื่องภายนอก (IP อื่น) เชื่อมต่อฐานข้อมูลได้ มักใช้เมื่อ
- เชื่อมจาก MySQL Workbench / DBeaver / HeidiSQL บนเครื่องตัวเองเพื่อจัดการฐานข้อมูล
- แอปหรือเว็บที่โฮสต์คนละที่ต้องการอ่าน/เขียนฐานข้อมูลนี้
- เครื่องมือ Reporting / BI ที่ต้องดึงข้อมูลจากภายนอก
ความเสี่ยงด้านความปลอดภัย — อ่านก่อนเปิด
การเปิด Remote MySQL เพิ่มช่องทางให้คนภายนอกพยายามเชื่อมต่อฐานข้อมูล หากตั้งค่าหละหลวมจะเสี่ยงถูกโจมตี Brute Force หรือขโมยข้อมูล กฎเหล็กคือ อย่าเปิดให้ทุก IP (%) เด็ดขาด และจำกัดเฉพาะ IP ที่จำเป็นเท่านั้น
% (เปิดทุก IP) เท่ากับเปิดประตูฐานข้อมูลให้ทั้งอินเทอร์เน็ต อย่าทำเด็ดขาดแม้จะสะดวก เพราะ Bot สแกนหา MySQL ที่เปิดสาธารณะตลอดเวลาขั้นที่ 1: หา IP ของเครื่องที่จะเชื่อม
ไปที่เว็บเช็ก IP (ค้นหา "what is my ip") จากเครื่องที่ต้องการเชื่อม จดเลข IPv4 ไว้ เช่น 203.0.113.45 ถ้าเป็น IP บ้านที่เปลี่ยนบ่อย (Dynamic) ให้เผื่อว่าจะต้องอัปเดตเป็นระยะ
ขั้นที่ 2: เพิ่ม IP ใน Remote MySQL
- Login cPanel → Section "Databases" → คลิก "Remote MySQL"
- ในช่อง "Host (% wildcard is allowed)" ใส่ IP ที่จดไว้ (ใส่ทีละ IP)
- ใส่ Comment เช่น "office-workbench" เพื่อจำว่า IP นี้ของอะไร
- กด "Add Host"
ถ้าต้องการอนุญาตช่วง IP ของออฟฟิศที่ขึ้นต้นเหมือนกัน ใช้ wildcard เฉพาะส่วนท้าย เช่น 203.0.113.% (ยังจำกัดกว่าการเปิดทั้งหมด)
ขั้นที่ 3: ตรวจ User และสิทธิ์ฐานข้อมูล
ใช้ User ที่ผูกกับฐานข้อมูลนั้นแล้วใน cPanel → MySQL Databases และให้สิทธิ์เท่าที่จำเป็น ถ้าแค่ดึงข้อมูลไปทำรายงาน ให้สิทธิ์ SELECT อย่างเดียวก็พอ ดูวิธีสร้าง User ที่ สร้างฐานข้อมูล MySQL
ขั้นที่ 4: เชื่อมต่อจากโปรแกรมภายนอก
# ค่าที่ใช้เชื่อมจาก MySQL Workbench / DBeaver
Host: yourdomain.com (หรือ IP ของ Server)
Port: 3306
Username: cpaneluser_dbuser
Password: รหัสผ่าน User
Database: cpaneluser_dbname
# ทดสอบจาก Command Line
mysql -h yourdomain.com -P 3306 -u cpaneluser_dbuser -p
ตรวจสอบว่า Remote MySQL ทำงานถูกต้อง
# 1. ทดสอบว่า Port 3306 เปิดรับจาก IP ของคุณ
nc -zv yourdomain.com 3306
# ถ้าได้ "succeeded" แสดงว่า Server รับการเชื่อมต่อ
# 2. ทดสอบ Login จริง
mysql -h yourdomain.com -u cpaneluser_dbuser -p -e "SHOW DATABASES;"
# ถ้าแสดงรายชื่อฐานข้อมูล = เชื่อมสำเร็จ
# 3. ทดสอบจาก IP ที่ไม่ได้อนุญาต (ควรถูกปฏิเสธ)
# ลองจากเครือข่ายอื่น → ควรขึ้น Access denied / connection refused
แก้ปัญหาที่พบบ่อย
Error: "Host is not allowed to connect to this MySQL server"
IP ของคุณยังไม่ถูกเพิ่มใน Remote MySQL หรือ IP เปลี่ยนไปแล้ว (Dynamic IP) ตรวจ IP ปัจจุบันแล้วเพิ่มใหม่ในหน้า Remote MySQL
Error: "Access denied for user"
เป็นเรื่อง Username/Password หรือสิทธิ์ ไม่ใช่ IP ตรวจว่าใช้ชื่อ User เต็ม (มี prefix cpaneluser_) รหัสผ่านถูก และ User ถูกผูกกับฐานข้อมูลพร้อมสิทธิ์ที่ต้องการแล้ว
เชื่อมต่อ Timeout ไม่ขึ้น Error อะไรเลย
มักเป็น Firewall ของ Server บล็อก Port 3306 จาก IP ภายนอก แม้เพิ่มใน Remote MySQL แล้ว ติดต่อผู้ให้บริการ Hosting เพื่อขอเปิด Port หรือใช้ SSH Tunnel แทน
IP บ้านเปลี่ยนบ่อยจนต้องเพิ่มใหม่ตลอด
เป็นธรรมชาติของ Dynamic IP จากผู้ให้บริการเน็ตบ้าน ทางแก้คือใช้ SSH Tunnel (ไม่ผูกกับ IP), ขอ Static IP จาก ISP หรือเชื่อมผ่าน phpMyAdmin ในเบราว์เซอร์แทนสำหรับงานทั่วไป
คำถามที่พบบ่อย
Q: จำเป็นต้องเปิด Remote MySQL ไหมถ้าใช้แค่ phpMyAdmin?
A: ไม่จำเป็น phpMyAdmin ทำงานบน Server เดียวกับฐานข้อมูล (localhost) จึงไม่ต้องเปิด Remote เลย Remote MySQL จำเป็นเฉพาะเมื่อเชื่อมจากเครื่อง/โปรแกรมภายนอกเท่านั้น ดูการใช้ phpMyAdmin ที่ จัดการฐานข้อมูลด้วย phpMyAdmin
Q: เปิด Remote MySQL แล้วเว็บช้าลงไหม?
A: ไม่ การเปิด Remote ไม่กระทบความเร็วเว็บที่เชื่อมแบบ localhost อยู่แล้ว แต่ Query จากภายนอกผ่านอินเทอร์เน็ตจะช้ากว่า localhost เพราะมี Network Latency
Q: ลบ IP ออกจาก Remote MySQL ภายหลังได้ไหม?
A: ได้และควรทำเมื่อเลิกใช้ เข้าหน้า Remote MySQL แล้วกด Delete ที่ IP นั้น เพื่อปิดช่องทางที่ไม่ใช้แล้ว ลดพื้นที่เสี่ยงต่อการโจมตี