Skip to content

fix: MySQL 8.2+ and mysql:8 failing to start - #193

Merged
AaronFeledy merged 7 commits into
mainfrom
fix/mysql-8.4-startup
Oct 15, 2026
Merged

AaronFeledy merged 7 commits into
mainfrom
fix/mysql-8.4-startup

Conversation

@AaronFeledy

@AaronFeledy AaronFeledy commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

MySQL 8.2 removed expire_logs_days, but the Drupal 6–10 MySQL 8 configs still set it, so mysql:8.2, 8.3 and 8.4 abort on startup with unknown variable 'expire_logs_days=10'. The bare mysql:8 alias (MySQL 8.4.5) was also loading the 5.7 config file and failing on query_cache_limit.

  • Replace expire_logs_days = 10 with binlog_expire_logs_seconds = 864000: same 10 days, supported since MySQL 8.0.1
  • Send mysql:8 to the MySQL 8 config
  • Compare the pinned image version when deciding whether to force mysql_native_password, so mysql:8 (8.4) no longer gets an auth setting MySQL 8.4 rejects. 8.0–8.3 behave as before
  • Drupal 11's config was already fixed in Improve MySQL 8.4 Support #159 and is untouched
  • Add examples/drupal10-mysql84 on mysql:8 to CI

Verified locally on Lando 3.26.9: lando start with database: mysql:8 boots MySQL 8.4.5 with the MySQL 8 config and binlog_expire_logs_seconds=864000. The new example passes in Leia.

Fixes #186


Note

Medium Risk
Changes default MySQL config files and authentication defaults for the mysql:8 alias across Drupal recipes; mis-versioning could still break local database boots.

Overview
Fixes Drupal recipe MySQL 8.2+ and mysql:8 startup failures by aligning configs and version handling with current MySQL images.

All Drupal 6–10 mysql8.cnf templates now set binlog_expire_logs_seconds = 864000 instead of the removed expire_logs_days, so MySQL 8.2+ no longer aborts on unknown variables. Default config selection treats any 8.x database tag (including mysql:8) as MySQL 8 and loads mysql8.cnf instead of the 5.7 file. The drupal-mysql builder resolves pinned image versions before choosing mysql_native_password, so mysql:8 (8.4) is not forced onto auth settings 8.4 rejects while 8.0–8.3 behavior stays the same.

CI adds examples/drupal10-mysql84 to the Leia matrix and pins lando/run-leia-action to 1.0.0-beta.4; the unreleased changelog documents the fixes (Fixes #186).

Reviewed by Cursor Bugbot for commit 8d94a0d. Bugbot is set up for automated code reviews on this repo. Configure here.

@netlify

netlify Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for lando-drupal ready!

Name Link
🔨 Latest commit 8d94a0d
🔍 Latest deploy log https://app.netlify.com/projects/lando-drupal/deploys/6ad0bbde6bc345486403214c
😎 Deploy Preview https://deploy-preview-193--lando-drupal.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 92 (🟢 up 10 from production)
Accessibility: 96 (no change from production)
Best Practices: 100 (no change from production)
SEO: 100 (no change from production)
PWA: -
View the detailed breakdown and full score reports
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@AaronFeledy
AaronFeledy merged commit 4ae3ca2 into main Oct 15, 2026
50 checks passed
@AaronFeledy
AaronFeledy deleted the fix/mysql-8.4-startup branch October 15, 2026 11:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing deprecated variables in mysql:8.4 on Drupal10 recipe

1 participant