MariaDB logo

Relational engine

Connect MariaDB to Excel, Sheets and AI

MySQL-compatible relational engine. Drop-in for most MySQL workloads, including SkySQL and self-hosted clusters.

1connection
0inbound ports
read-onlyenforced

One connection, every surface

Where your MariaDB data can go

Connect MariaDB once and the same read-only connection feeds all of these — no second setup, no second copy of the data. 9 of 11 have a step-by-step guide.

Guide

MariaDB to Excel

Microsoft Excel · Excel add-in

Pull live MariaDB results straight into a worksheet and refresh them on demand — desktop Excel, Excel Online, Microsoft 365.

Read the guide
Guide

MariaDB to Google Sheets

Sheets add-on

Run a saved MariaDB query from the sidebar and drop the rows into the sheet. Shared collaborators can refresh it themselves.

Read the guide
Guide

MariaDB MCP server

Claude, Cursor and MCP clients

Give an AI assistant read-only access to MariaDB with the schema it needs to write correct SQL — no credentials in the chat.

Read the guide
Guide

MariaDB REST API

HTTP endpoint

Publish a MariaDB query as an authenticated JSON endpoint any application can call, with an OpenAPI 3.1 spec and ready-made Postman, Insomnia and Hoppscotch collections. No database port is opened.

Read the guide
Guide

MariaDB to Airtable

Automation platform

Sync MariaDB rows into an Airtable base on a schedule, or fetch them inside an Airtable automation script.

Read the guide
Guide

MariaDB to Baserow

Automation platform

Feed a Baserow table from MariaDB over the REST endpoint — self-hosted or Baserow cloud.

Read the guide
Guide

MariaDB to SeaTable

Automation platform

Keep a SeaTable base current with MariaDB data without exporting a file or exposing the database.

Read the guide
Guide

MariaDB to Smartsheet

Automation platform

Push MariaDB results into a Smartsheet grid so plans and reports read from the source system, not last week's export.

Read the guide
Guide

MariaDB to Anvil

Anvil Works · App platform

Back an Anvil Python app with MariaDB through the REST endpoint instead of embedding database credentials in the app.

Read the guide
Supported

MariaDB to Power BI

Power Query M

Paste the generated Power Query M into the Power BI Advanced Editor and the report reads live MariaDB results over HTTPS — no ODBC driver, no database port opened.

How Power BI works no MariaDB walkthrough written yet
Supported

MariaDB alerts and reports

Slack · Discord · Email · Webhook

Put a MariaDB query on a schedule and have the rows delivered to Slack, Discord, email or a signed webhook — or hold the message until a row count, threshold or percentage change crosses the line you set.

How alerts and reports work no MariaDB walkthrough written yet

How it works

5 steps, no inbound firewall change

01

Install the Network Agent on a machine that can already reach the server — a self-hosted cluster, SkySQL, or a container on the same host.

02

Enter host, port, database, user and password. Turn TLS on if the server offers it; client certificates are accepted if it requires them.

03

The agent reads the server banner and confirms it is MariaDB rather than MySQL, then reads the table and column layout so the Query Builder can offer real names.

04

Write read-only SQL, or let Nova write it. Filters can be @variables you declare or literal values the connector spots in your WHERE clause.

05

Read the saved query from Excel, Sheets, Power BI, MCP or REST — and share it with someone who never sees the statement.

Feature deep-dive

What MariaDB gives you

The awkward parts of real MariaDB data

MariaDB inherits MySQL's permissive corners, and long-lived schemas are full of them. These are handled rather than avoided.

  • Zero dates — '0000-00-00' is legal and fatal in most clients. It is read as an empty date instead of taking the whole query down.
  • tinyint means tinyint — tinyint(1) is the conventional boolean and arrives as true or false, but a plain tinyint stays a small integer.
  • Exact decimals — a DECIMAL column keeps the precision and scale you declared. Money does not become a float on the way out.
  • utf8mb4 by default, so emoji and the full range of CJK characters survive.
  • Cross-database joins work on one connection — if the login can see two databases on the same server, one query can read both.

If a login fails naming a plugin you have never configured

Worth knowing before you spend an afternoon on it. MariaDB answers a login attempt for an account it does not recognise with a fabricated handshake — deliberately, so that an attacker cannot use error messages to work out which usernames exist. The plugin it names is often auth_gssapi_client, which makes the failure read like a Kerberos problem it has nothing to do with.

  • It is a server behaviour, not a Query Streams one. It means the account does not exist, or is not granted from the host the agent is running on.
  • An account that does exist fails with a plain access-denied instead, which makes the two easy to tell apart: try a deliberately wrong password for a username you know is real.
  • The fix is on the server — create the user, and grant it from the agent's hostname or from '%'.

Federated joins use the database name

MariaDB has no schema layer between the database and the table, so in a cross-source query the middle part of a three-part name is the database itself.

-- shop_prod is the connection, sales is the MariaDB database
SELECT   c.region, COUNT(*) AS orders
FROM     shop_prod.sales.orders   o
JOIN     pg_crm.public.customers  c ON c.id = o.customer_id
GROUP BY c.region

Shared by every database connector

True of every database connector

  • Outbound only — the agent opens one encrypted connection out to Query Streams. No inbound port to forward, no VPN, no IP allowlist, nothing about your database exposed to the internet.
  • Credentials stay put — the database username and password live on the machine you installed the agent on. Query Streams never receives them and cannot reach your database on its own.
  • Read-only, enforced — one statement at a time, SELECT and friends only. A write is rejected on your own machine before it is ever sent to the server, rather than relying on a permission somebody remembered to set.
  • Deploy as many agents as you like — one per site, region or cloud. Every data source they can see arrives in a single dropdown, so nobody has to know which agent hosts what.

What you get once a query is saved

  • Share the capability, not the SQL — a colleague or an outside partner can run your query and change its filters without ever seeing the statement behind it.
  • Filters from either direction — declare them yourself as @variables, or let the connector spot the literal values already sitting in your WHERE clause and offer those as dropdowns.
  • Read it from anywhere — Microsoft Excel, Google Sheets, Power BI, the REST API, AI assistants over MCP, the Query Builder and Nova all read the same saved query.
  • Run several at once — five saved queries into five worksheet tabs, streamed concurrently, however large the results.
  • Join it to anything else you have connected — another database, a business API, or a folder of files, in one read-only statement.

Cross-source SQL

Join MariaDB to the rest of your data

One statement can span MariaDB and your other connections at once. Each source runs only the part it can, streams the result back, and the join happens centrally — the sources never talk to each other and nothing is copied anywhere.

3 connections · 3 agents

MariaDB Relational engine
PostgreSQL Relational engine
Stripe Payments & billing

One statement

-- nothing copied, nothing merged, nothing scheduled
SELECT   c.region, COUNT(*) AS orders, SUM(i.amount_due) AS invoiced
FROM     shop_prod.shopdb.orders1 f
JOIN     pg_crm.public.customers2 c ON c.id = f.customer_id
JOIN     billing.stripe.invoices3 i ON i.customer = c.stripe_id
GROUP BY c.region
ORDER BY invoiced DESC;

The three parts are connection, schema and table — and the connection name is whatever you called it. Illustrative columns; your tables will be your tables. Read-only applies to every piece: SELECT, WITH and EXPLAIN only, with a ceiling on how much any one source may hand over for a single query. How federated queries work

Connection details

What MariaDB needs

Port
3306 by default, any port accepted
Encryption
TLS optional — off unless you tick it, required rather than preferred once you do. CA, client certificate and key accepted
Credentials
A database username and password, held on the agent. Query Streams never receives them
Driver
MySqlConnector 2.5.0, bundled — nothing to install on the server or the client
Server detection
The banner is read on connect, so the product and version reported back are MariaDB's own
Character set
utf8mb4, so emoji and full CJK survive the round trip
Legacy dates
'0000-00-00' is read as an empty date instead of throwing
Timeouts
30 seconds to connect, 30 seconds per statement while streaming
Read-only
Enforced on your own machine before the statement is sent to the server

MariaDB and MySQL share a wire protocol, so they share a driver here, but they are not treated as the same product. The agent reads the server banner on every connection test and reports MariaDB's own version string, which matters the moment you need to know whether a function you are about to use exists on your side of the fork.

In a cross-source query the middle part of a three-part reference is the MariaDB database name, because MariaDB has no separate schema layer. A connection called shop_prod reading the sales database is written shop_prod.sales.orders.

Vendor documentation: mariadb.org

FAQ

Questions about MariaDB

Which tools can read MariaDB data through Query Streams?

All of them, from one connection: Excel, Google Sheets, MCP, REST API, Airtable, Baserow, SeaTable, Smartsheet, Anvil, Power BI, scheduled alerts and reports. Connect the database once and every surface reads the same read-only connection — there is no per-tool setup and no second copy of the data.

Do I have to open a firewall port to my MariaDB database?

No. The Query Streams Network Agent runs inside your network and opens a single outbound encrypted connection. Nothing listens for inbound traffic, no VPN is required, and the database keeps its existing firewall rules.

Can Query Streams change data in MariaDB?

No. The agent enforces read-only at the point of execution — one statement at a time, SELECT and friends only. Credentials stay on the agent and are never sent to Query Streams.

What does Query Streams need to connect to MariaDB?

A reachable host, a role and its password — the agent carries the driver, so nothing is installed on the database. Port: 3306 by default, any port accepted. Encryption: TLS optional — off unless you tick it, required rather than preferred once you do. CA, client certificate and key accepted. Credentials: A database username and password, held on the agent. Query Streams never receives them. Driver: MySqlConnector 2.5.0, bundled — nothing to install on the server or the client.

Can I join MariaDB to another database in the same query?

Yes — that is a federated query. One statement can reference MariaDB and your other connections at once, written as connection.schema.table. Each source runs only the part it can and streams the result back; the join happens centrally, so the sources never connect to each other and nothing is copied or scheduled. Read-only applies to every piece — SELECT, WITH and EXPLAIN only — and there is a ceiling on how much any one source may hand over for a single query. Federated queries are a plan feature; the federated queries page carries the current source and size limits.

Put MariaDB where the work happens

Install the agent, point it at your database, and pick a destination.

Read-only Outbound only Credentials stay on the agent