n8n x MySQL: อ่าน เขียน Query อัตโนมัติ
วิธีเชื่อมต่อ n8n กับ MySQL เพื่ออ่าน เขียน และ Query ข้อมูลอัตโนมัติ พร้อมตัวอย่าง Workflow จริง
MySQL เป็นฐานข้อมูลที่ใช้กันแพร่หลายมากในระบบธุรกิจไทย ไม่ว่าจะเป็นระบบ ERP, เว็บไซต์ WordPress, ระบบ POS หรือ Backend ของ App ต่างๆ ถ้าระบบของคุณใช้ MySQL อยู่ n8n สามารถดึงและเขียนข้อมูลเข้า MySQL ได้โดยตรง ไม่ต้องผ่าน API พิเศษใดๆ
ความสามารถนี้เปิดโอกาสให้สร้าง Workflow ได้หลายอย่าง เช่น ดึงออร์เดอร์ใหม่จาก MySQL แล้วส่งแจ้งเตือนผ่าน LINE, อ่านรายชื่อลูกค้าแล้วส่งอีเมล Newsletter, หรือรับข้อมูลจาก Webhook แล้วบันทึกลง MySQL ทันที
ตั้งค่า MySQL Credentials ใน n8n
ก่อนใช้ MySQL Node ต้องตั้งค่า Credential ที่เก็บข้อมูลการเชื่อมต่อ Database ก่อน
-
ไปที่ Settings > Credentials > Add Credential
-
ค้นหาและเลือก MySQL
-
กรอกข้อมูลต่อไปนี้:
- Host — IP หรือ Domain ของ MySQL Server เช่น
192.168.1.100หรือdb.example.com - Port — ค่าเริ่มต้นคือ
3306 - Database — ชื่อ Database ที่ต้องการเชื่อมต่อ
- User — Username ของ MySQL
- Password — Password ของ MySQL User
- Host — IP หรือ Domain ของ MySQL Server เช่น
-
กด Test เพื่อตรวจสอบว่าเชื่อมต่อสำเร็จ แล้วกด Save
ข้อแนะนำด้านความปลอดภัย: สร้าง MySQL User ที่มีสิทธิ์เฉพาะที่ Workflow ต้องการเท่านั้น เช่น ถ้า Workflow แค่อ่านข้อมูล ให้ User มีสิทธิ์แค่ SELECT อย่าใช้ Root User เด็ดขาด
Operation 1: Execute Query — รัน SQL ตามต้องการ
MySQL Node ใน n8n มี Operation หลักคือ Execute Query ที่ให้เขียน SQL ได้อย่างอิสระ เหมาะสำหรับ Query ที่ซับซ้อน
ตัวอย่าง: ดึงออร์เดอร์ที่สถานะเป็น “pending” ใน 24 ชั่วโมงที่ผ่านมา
SELECT order_id, customer_name, total_amount, created_at
FROM orders
WHERE status = 'pending'
AND created_at >= NOW() - INTERVAL 24 HOUR
ORDER BY created_at DESC
ผลลัพธ์จาก Query จะถูกส่งออกเป็น Items ใน n8n โดยแต่ละ Row กลายเป็น 1 Item ที่นำไปใช้ต่อใน Node ถัดไปได้ทันที
Operation 2: Insert — เพิ่มข้อมูลใหม่
ใช้ INSERT INTO ใน Execute Query โดยใส่ค่าจาก Node ก่อนหน้าผ่าน Expression
ตัวอย่าง: บันทึก Lead ที่รับมาจาก Webhook
INSERT INTO leads (name, email, phone, source, created_at)
VALUES (
'{{ $json.name }}',
'{{ $json.email }}',
'{{ $json.phone }}',
'{{ $json.source }}',
NOW()
)
ถ้าต้องการดึง ID ของ Row ที่เพิ่งสร้างออกมาใช้ต่อ ให้เพิ่ม Query นี้ต่อท้ายหรือใช้ LAST_INSERT_ID()
Operation 3: Update — แก้ไขข้อมูลที่มีอยู่
ตัวอย่าง: อัปเดตสถานะออร์เดอร์หลังจากชำระเงิน
UPDATE orders
SET status = 'paid', paid_at = NOW()
WHERE order_id = {{ $json.order_id }}
ควรระวังเรื่อง SQL Injection เมื่อใช้ค่าจาก User Input โดยตรง n8n รองรับ Parameterized Query ที่ปลอดภัยกว่า ให้ใช้ $1, $2 แทนการแทรกค่าตรงๆ (ขึ้นอยู่กับ n8n version)
Operation 4: Delete — ลบข้อมูล
ตัวอย่าง: ลบ Session ที่หมดอายุแล้ว
DELETE FROM user_sessions
WHERE expires_at < NOW()
ควรทดสอบด้วย SELECT ก่อนเสมอเพื่อตรวจสอบว่า WHERE Condition ถูกต้อง ก่อนเปลี่ยนเป็น DELETE
Workflow ตัวอย่าง: รายงานยอดขายรายวัน
นี่คือ Workflow ที่ทีมขายหลายแห่งใช้จริง
ขั้นตอนใน Workflow:
- Schedule Trigger — ตั้งให้รันทุกวัน 8:00 น.
- MySQL Node — ดึงยอดขายเมื่อวาน
SELECT COUNT(*) as total_orders, SUM(total_amount) as total_revenue, AVG(total_amount) as avg_order_value FROM orders WHERE DATE(created_at) = DATE(NOW() - INTERVAL 1 DAY) AND status = 'completed' - Set Node — จัดรูปแบบข้อมูลให้อ่านง่าย
- LINE Notify Node หรือ Email Node — ส่งสรุปยอดขายให้ทีม
เทคนิค: ใช้ Loop กับ MySQL อย่างถูกวิธี
ถ้า Workflow ต้องประมวลผล Record จำนวนมาก เช่น อ่านลูกค้า 500 คนแล้วส่งอีเมลทีละคน ควรใช้ Loop Over Items Node และตั้ง Batch Size ให้เหมาะสม (แนะนำ 10-50) เพื่อไม่ให้ MySQL รับ Connection มากเกินไปพร้อมกัน
ไม่แนะนำ: วน Loop แล้ว Query MySQL ทีละ Row แนะนำ: ดึงข้อมูลทั้งหมดมาในครั้งเดียว แล้ว Loop ประมวลผลในหน่วยความจำของ n8n
แก้ปัญหาที่พบบ่อย
ปัญหา: Connection Refused
ตรวจสอบว่า MySQL Server อนุญาตให้ IP ของ n8n เชื่อมต่อได้ ถ้า n8n อยู่บน Cloud ต้องเปิด Port 3306 ใน Firewall และตรวจสอบ bind-address ใน MySQL Config
ปัญหา: Character Encoding ภาษาไทยแสดงผิด
ตรวจสอบให้แน่ใจว่า Database และ Table ใช้ Charset utf8mb4 และ Collation utf8mb4_unicode_ci
ปัญหา: Query Timeout ถ้า Query ใช้เวลานานเกินไป ตรวจสอบว่า Column ที่ใช้ใน WHERE มี Index แล้วหรือยัง การเพิ่ม Index ช่วยลดเวลา Query ได้อย่างมาก
ปัญหา: Too Many Connections ลด Concurrency ของ Workflow หรือเพิ่ม Connection Pool Size ใน MySQL Config เป็น Limit ที่ Server รองรับได้
อยากเรียน n8n แบบเป็นระบบ ตั้งแต่เริ่มต้นจนสร้าง Workflow ใช้งานจริงได้ ลองดู คอร์สสอน n8n ที่ aiunlock.co
Related posts
n8n x Airtable: ใช้ Airtable เป็น Backend ง่ายๆ
เชื่อมต่อ n8n กับ Airtable เพื่ออ่าน เพิ่ม อัปเดต และลบข้อมูลอัตโนมัติ เหมาะสำหรับทีมที่ไม่มี Dev
n8n กับ Database: เชื่อมต่อและจัดการข้อมูลแบบ Pro
คู่มือครบ n8n กับ Database ครอบคลุม MySQL, Airtable, Supabase, Notion พร้อมเทคนิค ETL และการแปลงข้อมูลใน Workflow
n8n x Notion: ซิงค์และจัดการ Notion อัตโนมัติ
วิธีเชื่อมต่อ n8n กับ Notion เพื่ออ่าน สร้าง และอัปเดต Page และ Database อัตโนมัติ พร้อม Workflow จริงสำหรับทีม