VillageSQL is a drop-in replacement for MySQL with extensions.
All examples in this guide work on VillageSQL. Install Now →
This guide is AI-generated content. We tested every command in it against a live server before publishing, but your mileage may vary. Do your own extensive testing before you run any of this against a production system.
What Changes in 8.4
The upgrade is in-place: install the 8.4 binaries over an 8.0 data directory and the server upgrades the data dictionary itself on first start. Most schemas and queries carry over untouched. The changes that actually bite:Step 1: Find Accounts on the Old Auth Plugin
Before upgrading, list every account still usingmysql_native_password:
caching_sha2_password and update the application’s stored password:
--mysql-native-password=ON in your config. Treat that as a bridge, not a destination: the plugin is deprecated and scheduled for removal.
Step 2: Clean Your Configuration File
MySQL 8.4 removes system variables that were deprecated in 8.0. If yourmy.cnf sets one, the 8.4 server refuses to start with an unknown-variable error. The two most common:
expire_logs_days with binlog_expire_logs_seconds, and delete default_authentication_plugin (the 8.4 replacement, authentication_policy, defaults to caching_sha2_password already). Grep your config for every variable you set, and check each against the 8.4 reference before the upgrade rather than during the outage window.
Step 3: Check the Schema for Removed Syntax
Runmysqlcheck against all databases and review the output:
AUTO_INCREMENT on FLOAT or DOUBLE columns and to non-standard foreign key constraints, both removed in 8.4.
Step 4: Back Up, Then Upgrade In Place
There is no supported in-place downgrade from 8.4 to 8.0. Once the data dictionary is upgraded, the only way back is restoring a backup. So the backup is not a formality:The VillageSQL Angle
VillageSQL Server is a drop-in replacement for MySQL 8.4. Once you are on 8.4, everything in your stack that works with MySQL 8.4 also works with VillageSQL, and switching later is functionally a minor version swap on the same data directory. If the extension framework interests you, the 8.4 upgrade you are doing anyway is the on-ramp. See Upgrading to VillageSQL for that procedure.See also
- Upgrading to VillageSQL — the drop-in swap once you are on 8.4
- Backup strategies — the backup this upgrade depends on
- Common MySQL errors — decoding the errors a botched upgrade produces

