Description:
Upgrade checker: mysql_native_password=ON in option file not flagged for 9.x target
How to repeat:
1. On MySQL 8.4, add to [mysqld] in /etc/my.cnf and restart:
mysql_native_password=ON
Create one account legacy@localhost with mysql_native_password.
2. Install MySQL Shell from the 9.7 tools repository and run:
mysqlsh --no-wizard -- util check-for-server-upgrade root@localhost:3306 --target-version=9.7.2
3. Upgrade the server to 9.7.2 in place without changing /etc/my.cnf.
Expected: an Error that the mysql_native_password option no longer exists in 9.x and the server will not start with it.
Actual: only the account is reported; the option is not:
5) Check for deprecated or invalid user authentication methods.
Error: The following users are using the 'mysql_native_password'
- legacy@localhost
6) Check for deprecated or removed plugin usage. (pluginUsage)
No issues found
Errors: 1
Warnings: 21
The sysVars check (1) lists only changed defaults. After the upgrade the 9.7.2 server aborts, and by then the data dictionary has already been upgraded, so the 8.4 binaries refuse the data directory:
[System] [MY-013381] [Server] Server upgrade from '80410' to '90702' completed.
[ERROR] [MY-000067] [Server] unknown variable 'mysql_native_password=ON'.
[ERROR] [MY-010119] [Server] Aborting
A user who converts the reported account but keeps the option (which the 8.4 manual tells legacy users to set) therefore passes the checker and still ends up with a server that does not start.
The checker was run without --config-path; whether that option would catch it was not tested. On 8.4 the plugin is disabled by default, so mysql_native_password showing ACTIVE in INFORMATION_SCHEMA.PLUGINS already indicates that it was enabled through an option.
Suggested fix:
For targets 9.0 and later, report as an Error when mysql_native_password is active on the source (INFORMATION_SCHEMA.PLUGINS) or when mysql_native_password / --mysql-native-password appears in the option file given with --config-path, with the text: "Remove mysql_native_password from the option files before upgrading; the server aborts on startup otherwise." Likewise default_authentication_plugin for 8.4+ targets.
Found during a hands-on validation of the install/upgrade documentation on 2026-10-10 (Percona).
Description: Upgrade checker: mysql_native_password=ON in option file not flagged for 9.x target How to repeat: 1. On MySQL 8.4, add to [mysqld] in /etc/my.cnf and restart: mysql_native_password=ON Create one account legacy@localhost with mysql_native_password. 2. Install MySQL Shell from the 9.7 tools repository and run: mysqlsh --no-wizard -- util check-for-server-upgrade root@localhost:3306 --target-version=9.7.2 3. Upgrade the server to 9.7.2 in place without changing /etc/my.cnf. Expected: an Error that the mysql_native_password option no longer exists in 9.x and the server will not start with it. Actual: only the account is reported; the option is not: 5) Check for deprecated or invalid user authentication methods. Error: The following users are using the 'mysql_native_password' - legacy@localhost 6) Check for deprecated or removed plugin usage. (pluginUsage) No issues found Errors: 1 Warnings: 21 The sysVars check (1) lists only changed defaults. After the upgrade the 9.7.2 server aborts, and by then the data dictionary has already been upgraded, so the 8.4 binaries refuse the data directory: [System] [MY-013381] [Server] Server upgrade from '80410' to '90702' completed. [ERROR] [MY-000067] [Server] unknown variable 'mysql_native_password=ON'. [ERROR] [MY-010119] [Server] Aborting A user who converts the reported account but keeps the option (which the 8.4 manual tells legacy users to set) therefore passes the checker and still ends up with a server that does not start. The checker was run without --config-path; whether that option would catch it was not tested. On 8.4 the plugin is disabled by default, so mysql_native_password showing ACTIVE in INFORMATION_SCHEMA.PLUGINS already indicates that it was enabled through an option. Suggested fix: For targets 9.0 and later, report as an Error when mysql_native_password is active on the source (INFORMATION_SCHEMA.PLUGINS) or when mysql_native_password / --mysql-native-password appears in the option file given with --config-path, with the text: "Remove mysql_native_password from the option files before upgrading; the server aborts on startup otherwise." Likewise default_authentication_plugin for 8.4+ targets. Found during a hands-on validation of the install/upgrade documentation on 2026-10-10 (Percona).