Upgrading to MySQL 8.4 LTS: What You Need to Know
MySQL 8.0 reached end of life in April 2026, so it no longer receives security fixes. The current long-term support line is MySQL 8.4 LTS.
The new release model
- LTS releases (8.4) - long support with bug and security fixes only. The right choice for production.
- Innovation releases (9.x) - new features every few months, short support. For trying features early.
Authentication changes
The old mysql_native_password plugin is disabled by default in 8.4 (and removed in 9.x). Accounts should use caching_sha2_password, the default since 8.0.
-- Find accounts still using the old plugin
SELECT user, host, plugin FROM mysql.user WHERE plugin = 'mysql_native_password';
-- Switch an account
ALTER USER 'app'@'%' IDENTIFIED WITH caching_sha2_password BY 'new-strong-password';
Make sure your client libraries support caching_sha2_password; current versions of mysql2 (Node.js), PyMySQL, the official connectors and PHP's mysqlnd do. Connections need TLS, or RSA key exchange, for the first authentication.
Other things to check
- Removed and deprecated system variables and options in your
my.cnf; the server won't start with unknown options. - Changed defaults (for example some InnoDB settings) that may affect performance; compare with your tuned values.
- Replication terminology:
SOURCE/REPLICAcommands replace the oldMASTER/SLAVEforms.
A safe upgrade plan
- Run the MySQL Shell upgrade checker:
util.checkForServerUpgrade(). - Restore a recent backup into an 8.4 staging server and run your test suite and real traffic replays.
- Upgrade replicas first, verify, then fail over to an upgraded replica.
- Keep the old primary around until you're confident, as a fallback.
On managed services (RDS, Cloud SQL, Azure), use the provider's major-version upgrade feature, which often supports blue/green deployments to make switching back easy.
Was this article helpful?
Comments
No comments yet. Have a question or a tip? Be the first to share it.