From f0a16d313e1b0b835f89dd78d179c59272c399cf Mon Sep 17 00:00:00 2001 From: Aaron Feledy Date: Thu, 19 Feb 2026 10:18:49 -0600 Subject: [PATCH 01/11] test: add MySQL client compatibility test for PHP 8.4 Tests that the backdrop recipe with MySQL 8.0 and PHP 8.4 correctly auto-detects and installs the native MySQL client, verifying: - MySQL client installed (not MariaDB) - No SSL/TLS errors on connect - bee db-export works without SSL errors - Export uses MySQL dump format (not MariaDB dump) This test is expected to fail until @lando/php includes the recipe-prefixed db_client detection fix (lando/php#223). Refs: lando/lando#3833 --- .github/workflows/pr-backdrop-tests.yml | 1 + examples/backdrop-mysql-client/.lando.yml | 9 ++++ examples/backdrop-mysql-client/README.md | 57 +++++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 examples/backdrop-mysql-client/.lando.yml create mode 100644 examples/backdrop-mysql-client/README.md diff --git a/.github/workflows/pr-backdrop-tests.yml b/.github/workflows/pr-backdrop-tests.yml index ca0ed52..24ed37c 100644 --- a/.github/workflows/pr-backdrop-tests.yml +++ b/.github/workflows/pr-backdrop-tests.yml @@ -21,6 +21,7 @@ jobs: - examples/backdrop-init - examples/backdrop-mariadb - examples/backdrop-mysql8 + - examples/backdrop-mysql-client - examples/backdrop-nginx lando-version: - 3-edge diff --git a/examples/backdrop-mysql-client/.lando.yml b/examples/backdrop-mysql-client/.lando.yml new file mode 100644 index 0000000..ea5428d --- /dev/null +++ b/examples/backdrop-mysql-client/.lando.yml @@ -0,0 +1,9 @@ +name: backdrop-mysql-client +recipe: backdrop +config: + php: '8.4' + database: mysql:8.0 + +# do not remove this +plugins: + "@lando/backdrop": ../.. diff --git a/examples/backdrop-mysql-client/README.md b/examples/backdrop-mysql-client/README.md new file mode 100644 index 0000000..5cb8e90 --- /dev/null +++ b/examples/backdrop-mysql-client/README.md @@ -0,0 +1,57 @@ +# Backdrop MySQL Client Compatibility Example + +This example tests that the backdrop recipe with MySQL correctly auto-detects +and installs the native MySQL client, avoiding SSL/TLS errors and MariaDB dump +format issues when using `bee db-export`. + +See: https://github.com/lando/lando/issues/3833 + +## Start up tests + +Run the following commands to get up and running with this example. + +```bash +# Should start up successfully +lando poweroff +lando start +``` + +## Verification commands + +Run the following commands to validate things are rolling as they should. + +```bash +# Should auto-detect MySQL and install the MySQL client (not MariaDB) +lando exec appserver -- mysql --version | grep -qiv "MariaDB" +``` + +```bash +# Should be able to connect to MySQL without SSL errors +lando mysql backdrop -e "SELECT 1" +``` + +```bash +# Should be able to export with bee without SSL errors +lando bee db-export --file=/tmp/bee-export.sql +``` + +```bash +# Exported SQL should use MySQL dump format (not MariaDB) +lando exec appserver -- cat /tmp/bee-export.sql | grep -qiv "MariaDB dump" +``` + +```bash +# Should be able to export with db-export without SSL errors +lando db-export --stdout > /tmp/lando-export.sql +cat /tmp/lando-export.sql | grep -i "Dump" | grep -qiv "MariaDB" +``` + +## Destroy tests + +Run the following commands to trash this app like nothing ever happened. + +```bash +# Should be destroyed with success +lando destroy -y +lando poweroff +``` From 90c5f9c9ab1ffa173c49d268a56db59ee1253909 Mon Sep 17 00:00:00 2001 From: Aaron Feledy Date: Thu, 19 Feb 2026 10:28:02 -0600 Subject: [PATCH 02/11] fix: require @lando/php ^1.11.0 and fix test assertions - Bump @lando/php to ^1.11.0 for recipe-prefixed db_client detection - Fix dump format checks: grep for 'MySQL' in header instead of broken inverted grep on full file (bugbot feedback) --- examples/backdrop-mysql-client/README.md | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/backdrop-mysql-client/README.md b/examples/backdrop-mysql-client/README.md index 5cb8e90..f5e593e 100644 --- a/examples/backdrop-mysql-client/README.md +++ b/examples/backdrop-mysql-client/README.md @@ -37,13 +37,13 @@ lando bee db-export --file=/tmp/bee-export.sql ```bash # Exported SQL should use MySQL dump format (not MariaDB) -lando exec appserver -- cat /tmp/bee-export.sql | grep -qiv "MariaDB dump" +lando exec appserver -- head -5 /tmp/bee-export.sql | grep -i "dump" | grep -iq "MySQL" ``` ```bash # Should be able to export with db-export without SSL errors lando db-export --stdout > /tmp/lando-export.sql -cat /tmp/lando-export.sql | grep -i "Dump" | grep -qiv "MariaDB" +head -5 /tmp/lando-export.sql | grep -i "dump" | grep -iq "MySQL" ``` ## Destroy tests diff --git a/package.json b/package.json index c8329f5..3730d50 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "@lando/mariadb": "^1.7.0", "@lando/mssql": "^1.4.3", "@lando/mysql": "^1.6.0", - "@lando/php": "^1.10.0", + "@lando/php": "^1.11.0", "@lando/postgres": "^1.5.0", "lodash": "^4.17.21" }, From 5e150b2d591ce7673bf919ba9b8678ea302da1aa Mon Sep 17 00:00:00 2001 From: Aaron Feledy Date: Thu, 19 Feb 2026 10:29:54 -0600 Subject: [PATCH 03/11] chore: update package-lock.json for @lando/php ^1.11.0 --- package-lock.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index bc974e1..69a7f4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,13 +6,13 @@ "packages": { "": { "name": "@lando/backdrop", - "version": "1.8.0", + "version": "1.9.0", "license": "MIT", "dependencies": { "@lando/mariadb": "^1.7.0", "@lando/mssql": "^1.4.3", "@lando/mysql": "^1.6.0", - "@lando/php": "^1.10.0", + "@lando/php": "^1.11.0", "@lando/postgres": "^1.5.0", "lodash": "^4.17.21" }, @@ -1472,9 +1472,9 @@ "license": "MIT" }, "node_modules/@lando/php": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@lando/php/-/php-1.10.0.tgz", - "integrity": "sha512-1+WO35CixeaZKaQ+NTi+Xii1xk+GYIJvbbqVI1Ba10RFMBTsUK4y99hZCKrCLW3KqPfe6f4ufAfMllALbnHHmw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@lando/php/-/php-1.11.0.tgz", + "integrity": "sha512-E2uj58X1+Kk+XYnDhpnl04nR60/lBt/jwhmhNPryis6t9EwMDLDJ8YI8UUjVSxvUL1NbVlYp4X90Rc3EHsWv1g==", "bundleDependencies": [ "@lando/nginx", "lodash", From d3c434fc85d487ecb20548dc8a9ff91a5fc239da Mon Sep 17 00:00:00 2001 From: Aaron Feledy Date: Thu, 19 Feb 2026 10:35:38 -0600 Subject: [PATCH 04/11] fix: correct bee db-export file path in test --- examples/backdrop-mysql-client/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/backdrop-mysql-client/README.md b/examples/backdrop-mysql-client/README.md index f5e593e..c8d5968 100644 --- a/examples/backdrop-mysql-client/README.md +++ b/examples/backdrop-mysql-client/README.md @@ -32,12 +32,12 @@ lando mysql backdrop -e "SELECT 1" ```bash # Should be able to export with bee without SSL errors -lando bee db-export --file=/tmp/bee-export.sql +lando bee db-export --file=bee-export.sql ``` ```bash # Exported SQL should use MySQL dump format (not MariaDB) -lando exec appserver -- head -5 /tmp/bee-export.sql | grep -i "dump" | grep -iq "MySQL" +lando exec appserver -- head -5 /app/bee-export.sql | grep -i "dump" | grep -iq "MySQL" ``` ```bash From 8e18afebbb07a26ab64011c93b64a73432897960 Mon Sep 17 00:00:00 2001 From: Aaron Feledy Date: Thu, 19 Feb 2026 10:40:36 -0600 Subject: [PATCH 05/11] fix: check bee export file relative to workdir, combine into one test block --- examples/backdrop-mysql-client/README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/examples/backdrop-mysql-client/README.md b/examples/backdrop-mysql-client/README.md index c8d5968..872e2eb 100644 --- a/examples/backdrop-mysql-client/README.md +++ b/examples/backdrop-mysql-client/README.md @@ -31,13 +31,9 @@ lando mysql backdrop -e "SELECT 1" ``` ```bash -# Should be able to export with bee without SSL errors +# Should be able to export with bee without SSL errors and use MySQL dump format lando bee db-export --file=bee-export.sql -``` - -```bash -# Exported SQL should use MySQL dump format (not MariaDB) -lando exec appserver -- head -5 /app/bee-export.sql | grep -i "dump" | grep -iq "MySQL" +lando exec appserver -- head -5 bee-export.sql | grep -i "dump" | grep -iq "MySQL" ``` ```bash From c0c0404951fb7643f59b729f64c3bb7d356b9512 Mon Sep 17 00:00:00 2001 From: Aaron Feledy Date: Thu, 19 Feb 2026 10:45:34 -0600 Subject: [PATCH 06/11] fix: bee db-export outputs gzipped file, use zcat --- examples/backdrop-mysql-client/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/backdrop-mysql-client/README.md b/examples/backdrop-mysql-client/README.md index 872e2eb..6105b8d 100644 --- a/examples/backdrop-mysql-client/README.md +++ b/examples/backdrop-mysql-client/README.md @@ -33,7 +33,7 @@ lando mysql backdrop -e "SELECT 1" ```bash # Should be able to export with bee without SSL errors and use MySQL dump format lando bee db-export --file=bee-export.sql -lando exec appserver -- head -5 bee-export.sql | grep -i "dump" | grep -iq "MySQL" +lando exec appserver -- bash -c "zcat bee-export.sql.gz | head -5" | grep -i "dump" | grep -iq "MySQL" ``` ```bash From 1d37f80349fed3105ec38ba0b2c84bde04bf9c04 Mon Sep 17 00:00:00 2001 From: Aaron Feledy Date: Thu, 19 Feb 2026 10:50:36 -0600 Subject: [PATCH 07/11] fix: use absolute path for bee db-export to avoid cwd ambiguity --- examples/backdrop-mysql-client/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/backdrop-mysql-client/README.md b/examples/backdrop-mysql-client/README.md index 6105b8d..42c883b 100644 --- a/examples/backdrop-mysql-client/README.md +++ b/examples/backdrop-mysql-client/README.md @@ -32,8 +32,8 @@ lando mysql backdrop -e "SELECT 1" ```bash # Should be able to export with bee without SSL errors and use MySQL dump format -lando bee db-export --file=bee-export.sql -lando exec appserver -- bash -c "zcat bee-export.sql.gz | head -5" | grep -i "dump" | grep -iq "MySQL" +lando bee db-export --file=/tmp/bee-export.sql +lando exec appserver -- bash -c "zcat /tmp/bee-export.sql.gz | head -5" | grep -i "dump" | grep -iq "MySQL" ``` ```bash From b751b121113fb68fceb835fe9b5d2a9e2854dd06 Mon Sep 17 00:00:00 2001 From: Aaron Feledy Date: Thu, 19 Feb 2026 10:52:00 -0600 Subject: [PATCH 08/11] fix: install Backdrop before running bee tests bee requires a working Backdrop installation to detect the database connection. Downloads Backdrop 1.33.1 and runs bee site-install during setup, matching the pattern used in the backdrop-init example. --- examples/backdrop-mysql-client/.lando.yml | 1 + examples/backdrop-mysql-client/README.md | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/examples/backdrop-mysql-client/.lando.yml b/examples/backdrop-mysql-client/.lando.yml index ea5428d..9ffe8ed 100644 --- a/examples/backdrop-mysql-client/.lando.yml +++ b/examples/backdrop-mysql-client/.lando.yml @@ -3,6 +3,7 @@ recipe: backdrop config: php: '8.4' database: mysql:8.0 + webroot: web # do not remove this plugins: diff --git a/examples/backdrop-mysql-client/README.md b/examples/backdrop-mysql-client/README.md index 42c883b..1832aa0 100644 --- a/examples/backdrop-mysql-client/README.md +++ b/examples/backdrop-mysql-client/README.md @@ -13,7 +13,16 @@ Run the following commands to get up and running with this example. ```bash # Should start up successfully lando poweroff +# Download and extract Backdrop +rm -rf web && mkdir -p web +curl -fsSL https://github.com/backdrop/backdrop/releases/download/1.33.1/backdrop.zip -o /tmp/backdrop.zip +unzip -q /tmp/backdrop.zip -d web +mv web/backdrop/* web/backdrop/.* web/ 2>/dev/null || true +rmdir web/backdrop 2>/dev/null || true lando start +# Install Backdrop with bee +cd web && chmod +x core/scripts/* +lando bee site-install --db-name=backdrop --db-user=backdrop --db-pass=backdrop --db-host=database --username=admin --password=admin --email=test@lando.dev --site-name="MySQL Client Test" --auto ``` ## Verification commands @@ -32,6 +41,7 @@ lando mysql backdrop -e "SELECT 1" ```bash # Should be able to export with bee without SSL errors and use MySQL dump format +cd web lando bee db-export --file=/tmp/bee-export.sql lando exec appserver -- bash -c "zcat /tmp/bee-export.sql.gz | head -5" | grep -i "dump" | grep -iq "MySQL" ``` From 05a8c1424c3568c14faf997b9531739d98c84836 Mon Sep 17 00:00:00 2001 From: Aaron Feledy Date: Thu, 19 Feb 2026 10:55:24 -0600 Subject: [PATCH 09/11] fix: bee db-export takes file as positional arg, not --file flag --- examples/backdrop-mysql-client/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/backdrop-mysql-client/README.md b/examples/backdrop-mysql-client/README.md index 1832aa0..9fbdbcb 100644 --- a/examples/backdrop-mysql-client/README.md +++ b/examples/backdrop-mysql-client/README.md @@ -42,7 +42,7 @@ lando mysql backdrop -e "SELECT 1" ```bash # Should be able to export with bee without SSL errors and use MySQL dump format cd web -lando bee db-export --file=/tmp/bee-export.sql +lando bee db-export /tmp/bee-export.sql lando exec appserver -- bash -c "zcat /tmp/bee-export.sql.gz | head -5" | grep -i "dump" | grep -iq "MySQL" ``` From 46e0ff43ffd7dfcfb692b4d80045af56ed4c14f0 Mon Sep 17 00:00:00 2001 From: Aaron Feledy Date: Thu, 19 Feb 2026 11:03:17 -0600 Subject: [PATCH 10/11] fix: split setup steps into separate named test blocks --- examples/backdrop-mysql-client/README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/examples/backdrop-mysql-client/README.md b/examples/backdrop-mysql-client/README.md index 9fbdbcb..8659457 100644 --- a/examples/backdrop-mysql-client/README.md +++ b/examples/backdrop-mysql-client/README.md @@ -11,16 +11,22 @@ See: https://github.com/lando/lando/issues/3833 Run the following commands to get up and running with this example. ```bash -# Should start up successfully +# Should download and extract Backdrop lando poweroff -# Download and extract Backdrop rm -rf web && mkdir -p web curl -fsSL https://github.com/backdrop/backdrop/releases/download/1.33.1/backdrop.zip -o /tmp/backdrop.zip unzip -q /tmp/backdrop.zip -d web mv web/backdrop/* web/backdrop/.* web/ 2>/dev/null || true rmdir web/backdrop 2>/dev/null || true +``` + +```bash +# Should start up successfully lando start -# Install Backdrop with bee +``` + +```bash +# Should install Backdrop with bee cd web && chmod +x core/scripts/* lando bee site-install --db-name=backdrop --db-user=backdrop --db-pass=backdrop --db-host=database --username=admin --password=admin --email=test@lando.dev --site-name="MySQL Client Test" --auto ``` From ca2ad91cf173105eccd2300c5d70e143417ef567 Mon Sep 17 00:00:00 2001 From: Aaron Feledy Date: Thu, 19 Feb 2026 11:07:18 -0600 Subject: [PATCH 11/11] docs: add changelog entry for php ^1.11.0 bump --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 558d221..06d2206 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ ## {{ UNRELEASED_VERSION }} - [{{ UNRELEASED_DATE }}]({{ UNRELEASED_LINK }}) +* Updated `@lando/php` to `^1.11.0` for MySQL client auto-detection fix [#82](https://github.com/lando/backdrop/pull/82) + ## v1.9.0 - [February 18, 2026](https://github.com/lando/backdrop/releases/tag/v1.9.0) * Added dependabot config