Filing this per the discussion in zulip chat (https://mariadb.zulipchat.com/#narrow/stream/118759-general/topic/Password.20issues.20after.205.2E7.20-.3E.2010.2E3.20-.3E.2010.2E5.20upgrade.20path)
Password expiration existed in MySQL 5.7, but not in MariaDB 10.3.
On servers that upgraded from 5.7 to 10.3, there are leftover "cruft" fields in mysql.user relating to password expiry that do not get used.
When creating users on a 10.3 system, the "password_last_changed" field is initialized as 0000-00-00 00:00:00
However, password expiration was added in 10.4 – and on such systems, users who had 0000-00-00 00:00:00 as their password_last_changed get their passwords expired – even if password expiration is not enabled.
I've attached a sample affected 10.3 datadir to this case.
The basic premise is to start on MySQL 5.7, upgrade to 10.3, create a user, then upgrade to 10.4+.
However, I have a sample affected datadir ready.
1. Extract the contents of maria_103_datadir.tar.xz to your datadir.
tar -xf maria_103_datadir.tar.xz
|
2. Start up MariaDB 10.4+
3. Run mysql_upgrade
4. Try to authenticate as the sql103 user, observe error:
[root@10-1-33-101 ~]# mysql -u sql103 -p'TestPassPleaseIgnore' -e 'SHOW DATABASES;'
|
ERROR 1820 (HY000) at line 1: You must SET PASSWORD before executing this statement
|
Just for additional info, here is the global priv entry for the user post-upgrade:
[root@10-1-33-101 ~]# mysql -BNe 'SELECT Priv from mysql.global_priv WHERE User="sql103" AND Host="localhost";' | python -m json.tool
|
{
|
"access": 0,
|
"account_locked": false,
|
"authentication_string": "*CA8C7DC8B54EDC492104531EA6612FC243D816C3",
|
"default_role": "",
|
"is_role": false,
|
"max_connections": 0,
|
"max_questions": 0,
|
"max_statement_time": 0.0,
|
"max_updates": 0,
|
"max_user_connections": 0,
|
"password_last_changed": 0,
|
"password_lifetime": -1,
|
"plugin": "mysql_native_password",
|
"ssl_cipher": "",
|
"ssl_type": 0,
|
"x509_issuer": "",
|
"x509_subject": ""
|
}
|
In this specific use case (where password expiration was not configured to occur), I would not expect the user's password to expire after upgrading to MariaDB 10.4+.
Edit: a better workaround fix:
mysql> update mysql.global_priv set Priv=JSON_SET(Priv, '$.password_last_changed', UNIX_TIMESTAMP()) WHERE JSON_VALUE(Priv, '$.password_last_changed') = '0';
|
Query OK, 25 rows affected (0.01 sec)
|
Rows matched: 25 Changed: 25 Warnings: 0
|
|
mysql> flush privileges;
|
Query OK, 0 rows affected (0.00 sec)
|
- causes
-
MDEV-33726
Moving from MariaDB 10.5 to 10.6 mysql_upgrade is not updating some system tables
-
-
Closed
{"report":{"fcp":1131.0999994277954,"ttfb":413.29999923706055,"pageVisibility":"visible","entityId":101944,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"a369c4ed-e074-41c5-b7dd-14381aafe3eb","navigationType":0,"readyForUser":1223.6999998092651,"redirectCount":0,"resourceLoadedEnd":1772.8999996185303,"resourceLoadedStart":418.19999980926514,"resourceTiming":[{"duration":153.5,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":418.19999980926514,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":418.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":571.6999998092651,"responseStart":0,"secureConnectionStart":0},{"duration":153.69999980926514,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":418.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":418.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":572.1999998092651,"responseStart":0,"secureConnectionStart":0},{"duration":209.69999980926514,"initiatorType":"script","name":"https://jira.mariadb.org/s/e9b27a47da5fb0f74a35acd57e9847fb-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":418.69999980926514,"connectEnd":418.69999980926514,"connectStart":418.69999980926514,"domainLookupEnd":418.69999980926514,"domainLookupStart":418.69999980926514,"fetchStart":418.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":418.69999980926514,"responseEnd":628.3999996185303,"responseStart":628.3999996185303,"secureConnectionStart":418.69999980926514},{"duration":292.30000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/c32eb0da7ad9831253f8397e6cc26afd-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":418.79999923706055,"connectEnd":418.79999923706055,"connectStart":418.79999923706055,"domainLookupEnd":418.79999923706055,"domainLookupStart":418.79999923706055,"fetchStart":418.79999923706055,"redirectEnd":0,"redirectStart":0,"requestStart":418.79999923706055,"responseEnd":711.0999994277954,"responseStart":711.0999994277954,"secureConnectionStart":418.79999923706055},{"duration":296,"initiatorType":"script","name":"https://jira.mariadb.org/s/bc0bcb146314416123c992714ee00ff7-CDN/lu2bv2/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":419,"connectEnd":419,"connectStart":419,"domainLookupEnd":419,"domainLookupStart":419,"fetchStart":419,"redirectEnd":0,"redirectStart":0,"requestStart":419,"responseEnd":715,"responseStart":715,"secureConnectionStart":419},{"duration":296.19999980926514,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":419.19999980926514,"connectEnd":419.19999980926514,"connectStart":419.19999980926514,"domainLookupEnd":419.19999980926514,"domainLookupStart":419.19999980926514,"fetchStart":419.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":419.19999980926514,"responseEnd":715.3999996185303,"responseStart":715.3999996185303,"secureConnectionStart":419.19999980926514},{"duration":296.6000003814697,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":419.3999996185303,"connectEnd":419.3999996185303,"connectStart":419.3999996185303,"domainLookupEnd":419.3999996185303,"domainLookupStart":419.3999996185303,"fetchStart":419.3999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":419.3999996185303,"responseEnd":716,"responseStart":716,"secureConnectionStart":419.3999996185303},{"duration":368.19999980926514,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2bv2/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":419.5999994277954,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":419.5999994277954,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":787.7999992370605,"responseStart":0,"secureConnectionStart":0},{"duration":296.80000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":419.69999980926514,"connectEnd":419.69999980926514,"connectStart":419.69999980926514,"domainLookupEnd":419.69999980926514,"domainLookupStart":419.69999980926514,"fetchStart":419.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":419.69999980926514,"responseEnd":716.5,"responseStart":716.5,"secureConnectionStart":419.69999980926514},{"duration":368,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2bv2/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":419.8999996185303,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":419.8999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":787.8999996185303,"responseStart":0,"secureConnectionStart":0},{"duration":296.80000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/719848dd97ebe0663199f49a3936487a-CDN/lu2bv2/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":420.19999980926514,"connectEnd":420.19999980926514,"connectStart":420.19999980926514,"domainLookupEnd":420.19999980926514,"domainLookupStart":420.19999980926514,"fetchStart":420.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":420.19999980926514,"responseEnd":717,"responseStart":717,"secureConnectionStart":420.19999980926514},{"duration":1323.3999996185303,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":426,"connectEnd":426,"connectStart":426,"domainLookupEnd":426,"domainLookupStart":426,"fetchStart":426,"redirectEnd":0,"redirectStart":0,"requestStart":426,"responseEnd":1749.3999996185303,"responseStart":1749.3999996185303,"secureConnectionStart":426},{"duration":1323.2999992370605,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":426.5,"connectEnd":426.5,"connectStart":426.5,"domainLookupEnd":426.5,"domainLookupStart":426.5,"fetchStart":426.5,"redirectEnd":0,"redirectStart":0,"requestStart":426.5,"responseEnd":1749.7999992370605,"responseStart":1749.7999992370605,"secureConnectionStart":426.5},{"duration":224.5999994277954,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":799.5,"connectEnd":799.5,"connectStart":799.5,"domainLookupEnd":799.5,"domainLookupStart":799.5,"fetchStart":799.5,"redirectEnd":0,"redirectStart":0,"requestStart":799.5,"responseEnd":1024.0999994277954,"responseStart":1024.0999994277954,"secureConnectionStart":799.5},{"duration":707.8999996185303,"initiatorType":"link","name":"https://jira.mariadb.org/s/d5715adaadd168a9002b108b2b039b50-CDN/lu2bv2/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/css/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":1065,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1065,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1772.8999996185303,"responseStart":0,"secureConnectionStart":0},{"duration":737,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/e65b778d185daf5aee24936755b43da6/_/download/contextbatch/js/browser-metrics-plugin.contrib,-_super,-project.issue.navigator,-jira.view.issue,-atl.general/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":1066,"connectEnd":1066,"connectStart":1066,"domainLookupEnd":1066,"domainLookupStart":1066,"fetchStart":1066,"redirectEnd":0,"redirectStart":0,"requestStart":1066,"responseEnd":1803,"responseStart":1803,"secureConnectionStart":1066},{"duration":756.1999998092651,"initiatorType":"script","name":"https://jira.mariadb.org/s/53a43b6764f587426c7bb9a150184c00-CDN/lu2bv2/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/js/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":1066.3999996185303,"connectEnd":1066.3999996185303,"connectStart":1066.3999996185303,"domainLookupEnd":1066.3999996185303,"domainLookupStart":1066.3999996185303,"fetchStart":1066.3999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":1066.3999996185303,"responseEnd":1822.5999994277954,"responseStart":1822.5,"secureConnectionStart":1066.3999996185303}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":202,"responseStart":413,"responseEnd":425,"domLoading":417,"domInteractive":1784,"domContentLoadedEventStart":1784,"domContentLoadedEventEnd":1833,"domComplete":2132,"loadEventStart":2132,"loadEventEnd":2133,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1753.1999998092651},{"name":"bigPipe.sidebar-id.end","time":1754.0999994277954},{"name":"bigPipe.activity-panel-pipe-id.start","time":1754.1999998092651},{"name":"bigPipe.activity-panel-pipe-id.end","time":1756.6999998092651},{"name":"activityTabFullyLoaded","time":1853}],"measures":[],"correlationId":"ebf6e91f79049b","effectiveType":"4g","downlink":9,"rtt":0,"serverDuration":111,"dbReadsTimeInMs":15,"dbConnsTimeInMs":24,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}
Just to note – I tested only on 10.5.12, not 10.4.x. However, I suspect you'd encounter the issue on 10.4 as well.