Query and update MySQL from any Windmill script, flow or app. SQL runs natively — no client library, no boilerplate.
Set up in 3 steps
Collect the connection details
You need the host, port, database name, user and password. Managed providers show all of these on the instance page.
Add the resource in Windmill
Open Resources, add a resource of type mysql, and fill the fields. Turn ssl on if your server requires an encrypted connection.
Write a SQL script
Pick MySQL as the script language and write plain SQL against the resource.
Scripts
Building blocks, if none of the projects above fit. Fork one, run it, or call it as a step inside your own flow.
Create Row
Execute Stored Procedure
Delete Row
Update Row
Find Row
Execute Query
Execute arbitrary Query in Deno
Execute arbitrary Query in Python
Execute arbitrary Query in Bun
Resource type
mysql — the shape of the credential every script on this page expects.
| Field | Type | Required | What it is |
|---|---|---|---|
| host | string | No | instance host |
| port | number | No | instance port |
| user | string | Yes | username |
| database | string | Yes | database name |
| password | string | Yes | user's password |
| ssl | boolean | No | use ssl |
| root_certificate_pem | string | No |
Questions
Do I have to write TypeScript to query?
No. A MySQL script is plain SQL. The scripts below exist for cases where you want to build the query in code.
Do I need an external database at all?
Not always. Windmill data tables are managed relational storage, scoped to a workspace, with no host, password or connection string to configure — Postgres underneath rather than MySQL. Reach for your own server when the database already exists, or when something outside Windmill has to read it too.
My server uses a private certificate
Paste it into root_certificate_pem. It is verified instead of the system trust store.
Are my credentials stored on the hub?
Never. They live only in your own Windmill workspace, encrypted at rest.