🔔 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 for a password sign-in lockout. 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. It can’t bypass an enforced domain: that lockout needs an administrator whose email is inside the domain. See Recover Administrator Access for the procedure.

