MySQL & MariaDB Version Differences
Every one of the 45 MySQL and MariaDB version lines ever released, with release/end-of-life dates you can compare below. The table further down goes deeper on the most commonly deployed versions — MySQL 5.7, 8.0, and the 8.4 LTS release, and MariaDB's 10.11 and 11.4 LTS releases — checked against official documentation on 2026-07-31.
Compare any two versions
All 45 released MySQL and MariaDB version lines are listed here — pick any two. Source: endoflife.date (aggregating official MySQL/Oracle and MariaDB Foundation EOL announcements), checked 2026-07-31.
Popular comparisons
- MySQL 5.7 vs MySQL 8.0
- MySQL 5.7 vs MySQL 8.4 LTS
- MySQL 5.7 vs MariaDB 10.11 LTS
- MySQL 5.7 vs MariaDB 11.4 LTS
- MySQL 8.0 vs MySQL 8.4 LTS
- MySQL 8.0 vs MariaDB 10.11 LTS
- MySQL 8.0 vs MariaDB 11.4 LTS
- MariaDB 10.11 LTS vs MySQL 8.4 LTS
- MySQL 8.4 LTS vs MariaDB 11.4 LTS
- MariaDB 10.11 LTS vs MariaDB 11.4 LTS
Popular versions, side by side
| Feature | MySQL 5.7 | MySQL 8.0 | MySQL 8.4 LTS | MariaDB 10.11 LTS | MariaDB 11.4 LTS |
|---|---|---|---|---|---|
| Security | |||||
| Default authentication plugin | mysql_native_password | caching_sha2_password (since 8.0.4) | caching_sha2_password; mysql_native_password disabled by default | unix_socket / mysql_native_password | unix_socket / mysql_native_password |
| Roles (CREATE ROLE) | Not supported | Supported | Supported | Supported (since 10.0.5 — earlier than MySQL) | Supported |
| Query behavior | |||||
| GROUP BY implicit sort order | Often sorted in practice (undocumented, deprecated) | Never guaranteed — add explicit ORDER BY | Never guaranteed — add explicit ORDER BY | Never guaranteed — add explicit ORDER BY | Never guaranteed — add explicit ORDER BY |
| Storage & charset | |||||
| Default character set | latin1 | utf8mb4 | utf8mb4 | utf8mb4 | utf8mb4 |
| Performance | |||||
| Query cache | Deprecated (since 5.7.20) | Removed entirely — no ON/OFF option exists | Removed entirely | Still available | Still available |
| Language features | |||||
| Window functions (OVER()) | Not supported | Supported | Supported | Supported (since 10.2) | Supported |
| Common Table Expressions (WITH) | Not supported | Supported, including RECURSIVE | Supported, including RECURSIVE | Supported (since 10.2) | Supported |
| JSON column type | Native binary JSON type (since 5.7.8) | Native binary JSON type, expanded functions | Native binary JSON type | JSON is an alias for LONGTEXT + a CHECK constraint — not a native type | Same as 10.11 — still a LONGTEXT alias |
| New reserved keywords | Baseline keyword set | Adds OVER, RECURSIVE, ROW_NUMBER, RANK, LAG, LEAD, GROUPS, WINDOW, and more | Same expanded keyword set as 8.0 | Different keyword set — check MariaDB's own reserved-words list | Same as 10.11 |
| Replication | |||||
| Replication terminology | MASTER / SLAVE (CHANGE MASTER TO, SHOW SLAVE STATUS) | SOURCE / REPLICA syntax added (8.0.23+); old terms still accepted | SOURCE / REPLICA is standard; old MASTER/SLAVE syntax deprecated | MASTER / SLAVE terminology retained | MASTER / SLAVE terminology retained |
| Tooling | |||||
| Upgrade process | Manual mysql_upgrade required after binary swap | Automatic upgrade on startup (since 8.0.16) | Automatic upgrade on startup | mariadb-upgrade required after binary swap | mariadb-upgrade required after binary swap |
Deep-dive guides
- MySQL 5.7 to 8.0: Default Authentication Plugin Change Why MySQL 8.0 switched from mysql_native_password to caching_sha2_password by default, and how it breaks older client libraries and drivers.
- MySQL 5.7 to 8.0: GROUP BY No Longer Implicitly Sorts Why queries relying on GROUP BY's old implicit ordering can return differently-ordered rows after upgrading to MySQL 8.0, and why the fix is always the same.
- MySQL 5.7 to 8.0: Default Character Set Becomes utf8mb4 Why new tables and databases created without an explicit CHARSET clause get a different default character set on MySQL 8.0 than on 5.7.
- MySQL 8.0: The Query Cache Is Gone (MariaDB Kept It) MySQL removed the query cache entirely in 8.0 after deprecating it in 5.7; MariaDB, a fork of the same codebase, chose to keep it — a lasting divergence.
- MariaDB JSON vs MySQL JSON: Not the Same Type Why a JSON column that is a genuine binary type in MySQL is really just a LONGTEXT column with a validation constraint in MariaDB.
- MySQL 8.0/8.4: MASTER/SLAVE → SOURCE/REPLICA Terminology MySQL introduced SOURCE/REPLICA replication syntax in 8.0.23 and completed the transition by 8.4; MariaDB has not. A real scripting/tooling compatibility gap.
- MySQL 8.0: mysql_upgrade Becomes Automatic Since MySQL 8.0.16, the server checks and upgrades its data dictionary and system tables automatically on startup — the separate mysql_upgrade step is gone.
- MySQL 8.0: New Reserved Keywords Break Old Identifiers Window functions and CTEs in MySQL 8.0 added new reserved words — column or table names matching one now need backtick-quoting they never needed on 5.7.
Planning a schema migration instead?
This page compares MySQL/MariaDB versions against each other. If you're moving to PostgreSQL, analyze your actual schema for a prioritized, scored readiness report instead of reading through general version notes.