MySQL แยกรุ่นเป็น LTS กับ Innovation
เมื่อก่อน MySQL ออกรุ่นใหญ่ห่างกันหลายปี 5.7 ออกปี 2558 แล้ว 8.0 ออกปี 2561 ระหว่างนั้น patch release อย่าง 8.0.x มีทั้งแพตช์และฟีเจอร์ใหม่ปนกันมา
ปี 2566 Oracle เปลี่ยนมาแยกเป็นสองสาย ตามหน้า release model ของ MySQL
- LTS ออกราวสองปีครั้ง แต่ละรุ่นได้ premier support 5 ปี และ extended support อีก 3 ปี รวม 8 ปี หลังออกแล้วจะมีแต่การแก้ไขที่จำเป็น ไม่ตัดฟีเจอร์ออก รุ่นที่ยังมีตอนนี้คือ 8.4 กับ 9.7
- Innovation มีฟีเจอร์ใหม่ก่อน ออกทุกไม่กี่เดือน แต่ละรุ่นได้ support จนกว่ารุ่นถัดไปจะออกเท่านั้น ตั้งแต่กลางปี 2569 ใช้เลขตามปีและเดือนที่ออก อย่าง 26.7 และ 26.10 ส่วน 9.7 เป็นรุ่นสุดท้ายที่ใช้เลขแบบเดิม
Innovation เหมาะกับการลองของใหม่ ถ้าเป็นเว็บที่ลูกค้าใช้งานจริง ควรอยู่บน LTS ที่ไม่ต้องอัปเกรดตามทุกไม่กี่เดือน
8.0 หมดอายุตั้งแต่ 30 เม.ย. 2569
8.0 ออกตั้งแต่ 19 เม.ย. 2561 ก่อนจะแยกสาย ได้ support รวมราว 8 ปี release notes ของ 8.0 บอกว่า 8.0 หมดอายุในเดือนเมษายน 2569 พร้อมกับ 8.0.46 และแนะนำให้ย้ายไป 8.4 LTS หรือรุ่น Innovation

เส้นประคือวันนี้ (ต.ค. 2569) ช่วงสีเขียวคือ premier support ช่วงสีเหลืองคือ extended support พ้นจากนั้นคือหมดอายุ
สถานะ ณ วันที่ 27 ต.ค. 2569 จาก endoflife.date
| รุ่น | ออกเมื่อ | premier support ถึง | หมดอายุ | รุ่นล่าสุด |
|---|---|---|---|---|
| 5.7 | 9 ต.ค. 2558 | 31 ต.ค. 2563 | 31 ต.ค. 2566 | 5.7.44 |
| 8.0 | 19 เม.ย. 2561 | 30 เม.ย. 2568 | 30 เม.ย. 2569 | 8.0.46 เป็นตัวสุดท้าย |
| 8.4 LTS | 30 เม.ย. 2567 | 30 เม.ย. 2572 | 30 เม.ย. 2575 | 8.4.13 |
| 9.7 LTS | 21 เม.ย. 2569 | 30 เม.ย. 2574 | 30 เม.ย. 2577 | 9.7.4 |
| 26.10 Innovation | 20 ต.ค. 2569 | จนกว่ารุ่นถัดไปจะออก | 26.10.0 |
จะดูว่าเว็บเราใช้รุ่นไหนอยู่ ก็สั่งคำสั่งนี้ใน client ตัวไหนก็ได้ หรือดูที่หน้าแรกของ phpMyAdmin ในกล่อง Database server ก็ได้เหมือนกัน
SELECT VERSION();
ถ้าผลที่ได้มีคำว่า MariaDB ต่อท้าย แปลว่าเราใช้ MariaDB ซึ่งนับอายุอีกแบบ ดูได้ในหัวข้อ MariaDB ด้านล่าง
ฐานข้อมูลยังรันได้ แต่จะไม่มีแพตช์ใหม่แล้ว
วันที่หมดอายุไม่ได้ทำให้อะไรหยุดทำงาน ข้อมูลยังอยู่ครบ แอปยังต่อได้ตามปกติ ที่เปลี่ยนคือหลังจากนี้จะไม่มีใครแก้อะไรให้ 8.0 แล้ว
- ช่องโหว่ใหม่ไม่มีแพตช์ Oracle ออกแพตช์ความปลอดภัยของ MySQL เป็นรอบทุกสามเดือน รอบเดือนกรกฎาคมและตุลาคม 2569 มีแต่ 8.4, 9.7 และรุ่น Innovation ความเสี่ยงจริงขึ้นกับว่าใครต่อถึงฐานข้อมูลได้บ้าง ถ้าปิด port 3306 ไว้ให้แค่แอปบนเครื่องเดียวกันต่อ ความเสี่ยงจะต่ำกว่าเปิด port ออกอินเทอร์เน็ตมาก ส่วนเวลาเราอยากต่อจากเครื่องตัวเอง ใช้ SSH tunnel แทนการเปิด port ได้
- บั๊กก็ไม่มีใครแก้ ถ้าเจอบั๊กที่ทำให้ server ล่ม หรือ query คืนผลผิด ทางเดียวที่เหลือคืออัปเกรด
- ฐานข้อมูลบน cloud มีค่าใช้จ่ายเพิ่ม standard support ของ Amazon RDS for MySQL 8.0 จบเมื่อ 31 ก.ค. 2569 แล้ว AWS ลงทะเบียน RDS Extended Support ให้ instance ที่ยังอยู่บน 8.0 เอง พร้อมคิดค่าบริการเพิ่มตาม vCPU ต่อชั่วโมงตั้งแต่ 1 ส.ค. 2569 ผู้ให้บริการเจ้าอื่นก็มีเงื่อนไขของตัวเอง ควรเปิดหน้าวงจรรุ่นของเจ้าที่ใช้อยู่ดู
- ตรวจ audit ไม่ผ่าน งานรัฐ หรือองค์กรที่ตรวจตามมาตรฐานอย่าง ISO 27001 มักนับซอฟต์แวร์ที่หมดอายุเป็นข้อที่ต้องแก้
MySQL จาก Ubuntu 22.04 และ 24.04 ยังได้แพตช์ต่อ
Ubuntu 22.04 และ 24.04 มากับ MySQL 8.0 ส่วน 26.04 มากับ 8.4 ช่วงต้นปี 2569 Canonical ยังอัปเดตตามเลขของ Oracle เป็น 8.0.45 และ 8.0.46 พอ 8.0 หมดอายุ USN-8700-1 เมื่อ 31 ส.ค. 2569 ก็อัปเดต 26.04 เป็น 8.4.11 ส่วน 22.04 และ 24.04 ได้แพตช์ที่ Canonical backport ลงมาเองบน 8.0.46 เช่น package 8.0.46-0ubuntu0.24.04.4
เป็นแบบเดียวกับ PHP ที่มากับ Ubuntu
- เลขเวอร์ชันค้างอยู่ที่ 8.0.46
SELECT VERSION()จึงบอกไม่ได้ว่าแพตช์ล่าสุดแล้วหรือยัง ต้องดูจากเลข package (apt policy mysql-server) - ได้เฉพาะแพตช์ที่ Canonical เลือก backport ซึ่งเน้นช่องโหว่ บั๊กทั่วไปไม่ได้ตามมาด้วย
- อยู่ได้ตามรอบของ Ubuntu MySQL อยู่ใน repository main ซึ่ง Canonical ดูแลตลอด standard support ของแต่ละรุ่น 22.04 ถึงกลางปี 2570 และ 24.04 ถึงพฤษภาคม 2572
ถ้าลง MySQL จาก APT repository ของ Oracle เอง จะไม่มีแพตช์ต่อแบบนี้ ตัวสุดท้ายที่ได้คือ 8.0.46
MariaDB นับอายุแยกจาก MySQL
XAMPP และ shared hosting หลายเจ้าใช้ MariaDB ซึ่งแยกออกมาจาก MySQL ตั้งแต่ปี 2552 คำสั่งส่วนใหญ่ยังเหมือนกัน แต่เลขรุ่นและอายุนับกันคนละแบบ การที่ MySQL 8.0 หมดอายุจึงไม่เกี่ยวกับ MariaDB
MariaDB มีรุ่น LTS ของตัวเอง ตามตารางของ endoflife.date 10.6 หมดอายุไปเมื่อกรกฎาคม 2569, 10.11 อยู่ถึงกุมภาพันธ์ 2571, 11.4 ถึงพฤษภาคม 2572 และ 11.8 ถึงมิถุนายน 2571 XAMPP บางรุ่นยังมากับ MariaDB 10.4 ที่หมดอายุตั้งแต่ปี 2567 ถ้าใช้แค่ตอนพัฒนาในเครื่องก็ไม่น่าห่วง แต่ควรใช้รุ่นเดียวกับ production จะได้ไม่เจอความต่างตอนขึ้นจริง
ขึ้น 8.4 LTS ก่อน แล้วค่อยไป 9.7
หน้า upgrade paths ไม่ให้ข้ามรุ่น LTS จาก 8.0 ไป 9.7 ตรง ๆ ไม่ได้ ต้องขึ้น 8.4 ก่อน ซึ่งทำได้ทั้งอัปเกรดในที่ (in-place) จาก 8.0.37 ขึ้นไป, dump แล้วโหลดใหม่ หรือทำ replication ไปหา server ใหม่ จากนั้นถ้าต้องการค่อยขึ้นจาก 8.4 ไป 9.7 อีกที
8.4 ได้แพตช์ถึงปี 2575 อยู่แล้ว สำหรับเว็บส่วนใหญ่ ขึ้น 8.4 รอบเดียวก็ใช้ต่อได้อีกหลายปี
user ที่ใช้ mysql_native_password จะล็อกอินไม่ได้
mysql_native_password เป็นวิธียืนยันรหัสผ่านแบบเก่า 8.4 ปิดไว้เป็นค่าเริ่มต้น และ 9.0 ขึ้นไปลบออกไปแล้ว user ที่สร้างไว้ตั้งแต่สมัย 5.7 หรือที่ตั้ง plugin นี้ไว้ให้ client รุ่นเก่าต่อได้ จะล็อกอินไม่ผ่านทันทีหลังอัปเกรด ดูได้ก่อนว่ามี user ไหนใช้อยู่บ้าง
SELECT user, host, plugin FROM mysql.user;
ถ้าเจอ ทางที่ปลอดภัยคือเปิด plugin นี้ไว้ชั่วคราวในไฟล์ config ของ MySQL แล้วค่อยเปลี่ยน user ทีละตัวไปใช้ caching_sha2_password ซึ่งเป็นค่าเริ่มต้นตั้งแต่ 8.0 และ PHP 7.4 ขึ้นไปใช้ได้อยู่แล้ว
[mysqld]
mysql_native_password=ON
ลองกับสำเนาก่อน และ backup ไว้เสมอ
- รัน upgrade checker ของ MySQL Shell (
util.checkForServerUpgrade()) ก่อน จะได้รู้ล่วงหน้าว่ามีค่า config ที่ 8.4 เอาออกไปแล้ว คำสงวนใหม่ที่ชนกับชื่อตาราง หรือ user ที่ใช้ plugin เก่าหรือไม่ - ลองแอปกับสำเนาฐานข้อมูลบน 8.4 ก่อนขึ้น production
- backup ก่อนอัปเกรดทุกครั้ง เพราะถอยจาก 8.4 กลับไป 8.0 แบบในที่ไม่ได้ ต้อง dump แล้วโหลดใหม่ หรือใช้ replication และทำได้เฉพาะตอนที่ยังไม่ได้ใช้ฟีเจอร์ใหม่ของ 8.4 กับข้อมูล
ถ้าฐานข้อมูลยังอยู่บน 8.0 ช่วงนี้เป็นจังหวะดีที่จะไล่ดูซอฟต์แวร์ที่เว็บใช้ทั้งชุดไปพร้อมกัน ทั้ง PHP และ Laravel ก็มีรอบหมดอายุของตัวเองเหมือนกัน






