🔔 Notable Changes
-
Saved queries (renamed from Worksheets) — SQL Editor’s Worksheets are renamed to Saved Queries, with a new sharing model. You can now share a saved query with specific users or groups as Viewer or Editor, organize saved queries into folders, and star favorites for quick access.
- Sharing is per-object: grant Viewer or Editor access to individual users or groups, instead of an all-or-nothing visibility toggle.
- Manage permissions are now split by action (create / search / list / manage) instead of one bundled permission.
- Folders and stars replace the previous flat worksheet list; drag-and-drop move and multi-select move to the root folder now work correctly.
- See change details.
-
Project-scoped instances — Previously, a database instance could only be managed at the workspace level. You can now assign an instance to a specific project.
- Instances can be scoped to one project instead of shared workspace-wide.
- Archiving or restoring an instance with active task runs now requires those runs to be canceled or completed first.
- Terraform provider 3.22.1 manages project-scoped instances through a new optional
parentargument onbytebase_instance— see the Terraform section. - See change details.
-
Sign-in restrictions are enforced for every account —
disallow_password_signinandenforce_identity_domainnow apply uniformly to all accounts, including workspace admins. If either setting is enabled, confirm before upgrading that at least one admin keeps a working sign-in path — SSO, or an email inside the enforced domain. If an admin does get locked out, the newbytebase recoveryCLI command is the break-glass path: run on the server against the metadata database, it can re-enable password sign-in or reset a user’s password without going through the UI. See change details. -
Monitoring endpoints have new access rules — Check your monitoring setup before upgrading; both endpoints an external monitor might poll are affected.
/metricsnow answers only requests originating from the server host (loopback). Keep a remote scraper working by running it — or a relay agent — on the same host, or start Bytebase with--metrics-remote-accessif the endpoint is protected by a gateway, firewall, or NetworkPolicy. A Prometheus job pointed directly at the server address stops collecting on upgrade./v1/actuator/infonow requires authentication — update any monitoring script that polls it to include a credential.
🚀 Features
- Login attempt lockout — Repeated failed sign-in attempts — password, emailed code, or MFA code — now lock the targeted credential for a cooldown period, on both Bytebase Cloud and self-hosted.
-
Operational health metrics —
/metricsnow carries product health metrics alongside the existing runtime ones: schema sync health, runner cycles, license expiry, and instance capacity. Note the access change above before pointing a scraper at it. -
Data Explorer — Browse table and collection data in SQL Editor without writing a query, especially useful for document databases. Filter with a native predicate for the connected engine — a
WHEREclause for SQL databases, a filter document for MongoDB, a query expression for Elasticsearch — and click any row to see its full detail, including nested JSON documents.
🎄 Enhancements
- Admin account recovery is separated from self-service profile editing: resetting another user’s forgotten password or lost authenticator is now a row-menu action on the Users page, and a reset shows the generated password once for you to relay out of band. Editing your own profile no longer bundles a password change in with your name and phone.
- Bytebase Cloud — Clearer instance connection error messages: no longer suggests a Docker-only hostname, and now recognizes a loopback or private address and suggests using a public IP instead.
🐞 Bug Fixes
- Fix Sync Schema generating duplicate statements for partitioned tables, and creating new MySQL tables without their partitioning.
-
Doris/StarRocks — Fix SQL Editor rejecting valid read-only queries that use
EXTRACT(unit FROM expression). -
Redis — Recognize RedisJSON and other module read commands (e.g.
JSON.GET) as read-only, so they’re no longer blocked in SQL Editor, exports, or JIT access grant requests. - TiDB — Fix instance sync failing against TiDB Cloud Essential’s version string.
- SQL Editor — Fix a workspace configured to land on SQL Editor instead redirecting to the workspace page after re-authentication.
- CosmosDB — Fix Run from an active JIT access grant losing the selected container and schema, and fix query results not returning the executed statement.
-
Oracle — Fix valid
constraint_statesyntax (USING INDEX LOCAL,ENABLE/DISABLE,VALIDATE/NOVALIDATE,RELY/NORELY,EXCEPTIONS INTO) being rejected in partitioned-table DDL. -
MySQL — Fix affected-rows estimates for DML driven by another table (e.g.
UPDATE ... WHERE EXISTS) being wildly overstated, which could incorrectly trigger the affected-rows SQL review rule.
🏗️ Terraform
- Upgrade to provider 3.22.1 after upgrading the server — Migration Guide. New: the optional
parentargument onbytebase_instanceand its data sources creates and queries project-scoped instances. Breaking: theclusterfield in instancedata_sourcesblocks and the computedservice_keyattribute onbytebase_userare removed — delete any references from configs. Behavior: project webhook URLs are now write-only; data sources read back an emptywebhooks.url.
📃 Change Details
Saved Queries API
WorksheetService becomes SavedQueryService. Every RPC and message is renamed with no compatibility aliases.
Visibility is removed; sharing is per-object IAM. The
visibility field (PRIVATE / PROJECT_READ / PROJECT_WRITE) is gone. On upgrade, every existing saved query migrates to owner-private — nothing stays silently shared. Re-share from the SQL Editor dialog, or via SetIamPolicy with VIEWER / EDITOR bindings to user: and group: principals.
Per-verb permissions replace bb.worksheets.*. The new family is bb.savedQueries.{create, search, list, get, getIamPolicy, setIamPolicy, update, delete} — update any custom role that referenced bb.worksheets.*. The creator holds every per-object permission; VIEWER carries get + getIamPolicy; EDITOR adds update. setIamPolicy is in no predefined role — sharing stays with the creator unless a custom role grants it (also the path to reassign a departed user’s queries).
Project Instances
Two Instance-/Database-level organization-policy API endpoints that were unsupported for project-scoped instances are removed. Archiving or restoring an instance now returns an error if it has task runs that are stillPENDING, AVAILABLE, or RUNNING — cancel or wait for those to finish first.
Account Security
Before upgrading, check whetherdisallow_password_signin or enforce_identity_domain is enabled in your workspace profile. Both settings are enforced for every account. If your only admin signs in with a password, or with an email outside the enforced domain, that account loses its sign-in path on upgrade.
The bytebase recovery CLI command is the break-glass path if that happens. It is an interactive session that connects to the metadata database directly rather than through the API, so it works while the UI is inaccessible. Stop all Bytebase servers sharing that database, run it on the server host, choose Enable password sign-in or Reset user password, then restart the servers.

