# mysql/mysql-workbench architecture

> Architecture diagram of the GitHub repository mysql/mysql-workbench, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mysql/mysql-workbench
- Repository: https://github.com/mysql/mysql-workbench

## Overview

MySQL Workbench is a graphical MySQL design and operations tool. A central workflow is to configure a server connection, issue SQL in the editor, and inspect returned data; the README documents this capability, while the supplied excerpts do not show the editor’s complete execution path. Separate branches cover schema modeling and forward engineering, plus administration and migration. The tree supports identifying these areas, but sampled code is sparse, so uncertain internal wiring is omitted; Enterprise features are documented but not represented by an identifiable subsystem here.

Main entry points: [`backend/wbpublic/objimpl/workbench.physical/workbench_physical_Model.cpp`](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/objimpl/workbench.physical/workbench_physical_Model.cpp) (Schema model), [`plugins/db.mysql/frontend/db_forward_engineer.cpp`](https://github.com/mysql/mysql-workbench/blob/8.0/plugins/db.mysql/frontend/db_forward_engineer.cpp) (Forward engineer), [`backend/wbprivate/sqlide/wb_sql_editor_form.cpp`](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbprivate/sqlide/wb_sql_editor_form.cpp) (SQL editor), [`library/cdbc/src/driver_manager.cpp`](https://github.com/mysql/mysql-workbench/blob/8.0/library/cdbc/src/driver_manager.cpp) (Connection manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_sql["SQL development"]
  node_editor["SQL editor"]
  node_connections["Connection manager<br/>[driver_manager.cpp]"]
  node_schema_tree["Live schema tree"]
  node_parser["SQL parser<br/>[sql_facade.cpp]"]
  node_recordset["Result storage"]
  node_result_view["Result viewer"]
end

subgraph group_model["Data modeling"]
  node_model["Schema model"]
  node_diagram["Model diagram"]
  node_canvas["Diagram canvas"]
  node_editors["Database object editors<br/>[editor_table.cpp]"]
  node_forward["Forward engineer"]
  node_script_export["SQL script export"]
end

subgraph group_ops["Server operations"]
  node_migration["Data migration"]
  node_administration["Server administration"]
end

subgraph group_core["Workbench platform"]
  node_grt["GRT model runtime<br/>[grt_manager.cpp]"]
  node_plugins["Plugin manager<br/>[plugin_manager.cpp]"]
  node_undo["Undo manager"]
end

node_user(("Workbench user"))
node_mysql[("MySQL server")]

node_user -->|"writes SQL"| node_editor
node_user -->|"configures connection"| node_connections
node_connections -->|"connects"| node_mysql
node_editor -->|"executes queries"| node_mysql
node_mysql -->|"returns rows"| node_recordset
node_recordset -->|"supplies results"| node_result_view
node_mysql -->|"provides live schema"| node_schema_tree
node_user -->|"designs schema"| node_model
node_model -->|"shows model"| node_diagram
node_diagram -->|"renders diagram"| node_canvas
node_user -->|"edits objects"| node_editors
node_model -->|"engineers schema"| node_forward
node_forward -->|"deploys schema"| node_mysql
node_forward -->|"exports SQL"| node_script_export
node_user -->|"starts migration"| node_migration
node_user -->|"administers server"| node_administration
node_plugins -->|"dispatches plugins"| node_grt
node_undo -->|"tracks model changes"| node_grt

click node_editor "https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbprivate/sqlide/wb_sql_editor_form.cpp"
click node_connections "https://github.com/mysql/mysql-workbench/blob/8.0/library/cdbc/src/driver_manager.cpp"
click node_schema_tree "https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbprivate/sqlide/wb_live_schema_tree.cpp"
click node_parser "https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/grtsqlparser/sql_facade.cpp"
click node_recordset "https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/sqlide/recordset_cdbc_storage.cpp"
click node_result_view "https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbprivate/sqlide/result_form_view.cpp"
click node_model "https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/objimpl/workbench.physical/workbench_physical_Model.cpp"
click node_diagram "https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbprivate/model/wb_model_diagram_form.cpp"
click node_canvas "https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/wbcanvas/workbench_physical_diagram_impl.cpp"
click node_editors "https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/grtdb/editor_table.cpp"
click node_forward "https://github.com/mysql/mysql-workbench/blob/8.0/plugins/db.mysql/frontend/db_forward_engineer.cpp"
click node_script_export "https://github.com/mysql/mysql-workbench/blob/8.0/plugins/db.mysql/frontend/db_forward_engineer_script.cpp"
click node_migration "https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/objimpl/db.migration/db_migration_Migration.cpp"
click node_administration "https://github.com/mysql/mysql-workbench/tree/8.0/backend/wbprivate/workbench"
click node_grt "https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/grt/grt_manager.cpp"
click node_plugins "https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/grt/plugin_manager.cpp"
click node_undo "https://github.com/mysql/mysql-workbench/blob/8.0/library/grt/src/grtpp_undo_manager.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_editor,node_connections,node_schema_tree,node_parser,node_recordset,node_result_view,node_user toneBlue
class node_model,node_diagram,node_canvas,node_editors,node_forward,node_script_export,node_mysql toneAmber
class node_migration,node_administration toneMint
class node_grt,node_plugins,node_undo toneRose
```

## Components

### SQL development

- [SQL editor](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbprivate/sqlide/wb_sql_editor_form.cpp): `backend/wbprivate/sqlide/wb_sql_editor_form.cpp`
- [Connection manager](https://github.com/mysql/mysql-workbench/blob/8.0/library/cdbc/src/driver_manager.cpp): `library/cdbc/src/driver_manager.cpp`
- [Live schema tree](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbprivate/sqlide/wb_live_schema_tree.cpp): `backend/wbprivate/sqlide/wb_live_schema_tree.cpp`
- [SQL parser](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/grtsqlparser/sql_facade.cpp): `backend/wbpublic/grtsqlparser/sql_facade.cpp`
- [Result storage](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/sqlide/recordset_cdbc_storage.cpp): `backend/wbpublic/sqlide/recordset_cdbc_storage.cpp`
- [Result viewer](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbprivate/sqlide/result_form_view.cpp): `backend/wbprivate/sqlide/result_form_view.cpp`

### Data modeling

- [Schema model](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/objimpl/workbench.physical/workbench_physical_Model.cpp): `backend/wbpublic/objimpl/workbench.physical/workbench_physical_Model.cpp`
- [Model diagram](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbprivate/model/wb_model_diagram_form.cpp): `backend/wbprivate/model/wb_model_diagram_form.cpp`
- [Diagram canvas](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/wbcanvas/workbench_physical_diagram_impl.cpp): `backend/wbpublic/wbcanvas/workbench_physical_diagram_impl.cpp`
- [Database object editors](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/grtdb/editor_table.cpp): `backend/wbpublic/grtdb/editor_table.cpp`
- [Forward engineer](https://github.com/mysql/mysql-workbench/blob/8.0/plugins/db.mysql/frontend/db_forward_engineer.cpp): `plugins/db.mysql/frontend/db_forward_engineer.cpp`
- [SQL script export](https://github.com/mysql/mysql-workbench/blob/8.0/plugins/db.mysql/frontend/db_forward_engineer_script.cpp): `plugins/db.mysql/frontend/db_forward_engineer_script.cpp`

### Server operations

- [Data migration](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/objimpl/db.migration/db_migration_Migration.cpp): `backend/wbpublic/objimpl/db.migration/db_migration_Migration.cpp`
- [Server administration](https://github.com/mysql/mysql-workbench/tree/8.0/backend/wbprivate/workbench): `backend/wbprivate/workbench`

### Workbench platform

- [GRT model runtime](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/grt/grt_manager.cpp): `backend/wbpublic/grt/grt_manager.cpp`
- [Plugin manager](https://github.com/mysql/mysql-workbench/blob/8.0/backend/wbpublic/grt/plugin_manager.cpp): `backend/wbpublic/grt/plugin_manager.cpp`
- [Undo manager](https://github.com/mysql/mysql-workbench/blob/8.0/library/grt/src/grtpp_undo_manager.cpp): `library/grt/src/grtpp_undo_manager.cpp`

### Other components

- **Workbench user**
- **MySQL server**

## Connections

- Workbench user → SQL editor: writes SQL
- Workbench user → Connection manager: configures connection
- Connection manager → MySQL server: connects
- SQL editor → MySQL server: executes queries
- MySQL server → Result storage: returns rows
- Result storage → Result viewer: supplies results
- MySQL server → Live schema tree: provides live schema
- Workbench user → Schema model: designs schema
- Schema model → Model diagram: shows model
- Model diagram → Diagram canvas: renders diagram
- Workbench user → Database object editors: edits objects
- Schema model → Forward engineer: engineers schema
- Forward engineer → MySQL server: deploys schema
- Forward engineer → SQL script export: exports SQL
- Workbench user → Data migration: starts migration
- Workbench user → Server administration: administers server
- Plugin manager → GRT model runtime: dispatches plugins
- Undo manager → GRT model runtime: tracks model changes
