OpenSRE uses MariaDB diagnostics to investigate database issues — global status, process list, slow queries, InnoDB status, and replication. Operations are read-only.
CREATE USER 'opensre_readonly'@'%' IDENTIFIED BY 'secure-password';GRANT PROCESS ON *.* TO 'opensre_readonly'@'%';GRANT SLAVE MONITOR ON *.* TO 'opensre_readonly'@'%';GRANT SELECT ON performance_schema.* TO 'opensre_readonly'@'%';GRANT SELECT ON your_database.* TO 'opensre_readonly'@'%';FLUSH PRIVILEGES;
Four notes on these grants, each confirmed against a real server:
information_schema needs no explicit grant — MariaDB exposes it automatically based on
a user’s other privileges. GRANT SELECT ON information_schema.* is rejected outright
(ERROR 1044) and aborts the script before later grants run.
The grant on the target database (MARIADB_DATABASE) is required — the connector
selects it as the default schema on connect, and without it every tool call fails with
Access denied ... to database.
The replication-status tool (SHOW ALL SLAVES STATUS) needs SLAVE MONITOR
— MySQL’s REPLICATION CLIENT name doesn’t carry the same privilege on MariaDB (SHOW GRANTS reports it back as BINLOG MONITOR, a related but different privilege that does
not cover replica status). Without it, that one tool fails with Access denied; you need (at least one of) the SLAVE MONITOR privilege(s) even though integrations verify mariadb and the other four tools pass. SLAVE MONITOR requires MariaDB 10.5.9+
(the privilege didn’t exist before then); on any older MariaDB, grant SUPER instead —
it has covered SHOW SLAVE STATUS across every MariaDB version.
Slow queries need performance_schema, which is enabled by default on the official
mariadb Docker image but often disabled in production my.cnf — check SELECT @@performance_schema if the slow-queries tool returns an empty note.
Like MySQL, the official MariaDB image starts a temporary init-only server before the
real one — its own log line reports port: 0. A readiness check against the socket (e.g.
mariadb-admin ping) can succeed against that temporary server and return moments before it
shuts down and the real server restarts, causing the very next command to fail with Access denied or a socket error. Waiting for the final server’s own log line (port: 3306) avoids
the race.
docker exec mariadb-dev mariadb -uroot -prootpass -e "CREATE USER 'opensre_readonly'@'%' IDENTIFIED BY 'verifypass';GRANT PROCESS ON *.* TO 'opensre_readonly'@'%';GRANT SLAVE MONITOR ON *.* TO 'opensre_readonly'@'%';GRANT SELECT ON performance_schema.* TO 'opensre_readonly'@'%';GRANT SELECT ON app_db.* TO 'opensre_readonly'@'%';FLUSH PRIVILEGES;"docker exec mariadb-dev mariadb -uroot -prootpass -D app_db -e "CREATE TABLE orders (id INT PRIMARY KEY, amount DECIMAL(10,2));INSERT INTO orders VALUES (1, 42.50), (2, 17.00);SELECT SLEEP(2);" > /dev/null
SERVICE │ SOURCE │ STATUS │ DETAILmariadb │ local env │ ✓ passed │ Connected to MariaDB 11.8.8-MariaDB-ubu2404 │ │ │ target database: app_db.
Chat sessions (unlike opensre integrations verify) only fall through to env
vars when the store has no records at all — any existing record, for any service, blocks
env-var resolution entirely. Point OPENSRE_INTEGRATIONS_STORE_PATH at a path inside a
fresh empty directory instead, so your real config is never read or written and the
MARIADB_* vars above are the only source of connection info:
Ask: Does the app_db MariaDB instance have any slow queries?Against this exact local instance the agent calls all 5 registered tools — global
status, process list, replication status, slow queries, and InnoDB status — and
finds the one outlier: a SELECT SLEEP(?) statement at ~2001 ms in
performance_schema, with every other engine, lock, and connection metric within
normal bounds.Teardown:
Keep TLS enabled (MARIADB_SSL=true) in production.
Store credentials out of source control.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OpenSRE Documentation","colors":{"primary":"#000000","light":"#FFFFFF","dark":"#000000"},"logo":{"light":"https://mintcdn.com/tracer/rmdYtNSoc9Q5D-5B/images/opensre-logo-black.svg?fit=max\u0026auto=format\u0026n=rmdYtNSoc9Q5D-5B\u0026q=85\u0026s=7ea8db5a1f8e1665db7544632022e298","dark":"https://mintcdn.com/tracer/rmdYtNSoc9Q5D-5B/images/opensre-logo-white.svg?fit=max\u0026auto=format\u0026n=rmdYtNSoc9Q5D-5B\u0026q=85\u0026s=cb153f8bae517d3cea2b823ad2e51327"},"favicon":"https://mintcdn.com/tracer/iKd9uDADI-KBLmoJ/favicon.ico?fit=max\u0026auto=format\u0026n=iKd9uDADI-KBLmoJ\u0026q=85\u0026s=cf78c0f1195ee204bf1022d69a921204","navbar":{"links":[{"icon":"discord","href":"https://discord.gg/opensre","label":"Discord"},{"icon":"box","href":"https://github.com/Tracer-Cloud/opensre/releases","label":"Releases"},{"icon":"github","href":"https://github.com/Tracer-Cloud/opensre","label":"GitHub"}]},"footer":{"socials":{"website":"https://www.opensre.com","github":"https://github.com/Tracer-Cloud/opensre","linkedin":"https://linkedin.com/company/tracercloud","discord":"https://discord.gg/opensre"}},"seo":{"metatags":{},"indexing":"all"},"integrations":{"hotjar":{"hjid":"6568352","hjsv":"6"},"posthog":{"apiKey":"phc_zutpVhmQw7oUmMkbawKNdYCKQWjpfASATtf5ywB75W2","apiHost":"https://us.i.posthog.com","sessionRecording":true}},"contextual":{"options":[],"display":"header"},"interaction":{"drilldown":false},"styling":{"latex":false},"navigation":{"directory":"card","pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tracer","hasAudioNarration":false,"actualSubdomain":"tracer","customDomains":["opensre.com"],"gitSource":{"type":"github","owner":"tracer-cloud","repo":"opensre","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae8e7d29a7f94b38af35926","collectionId":"54b1096e-9d7c-4398-93e1-59fb3c5b4cb8","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae8e7d29a7f94b38af35926"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae8e7d29a7f94b38af35926","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Integrations","count":80},{"language":"default","tag":"Monitoring","count":16},{"language":"default","tag":"Databases","count":13},{"language":"default","tag":"Cloud","count":12},{"language":"default","tag":"Code and CI","count":12},{"language":"default","tag":"Get started","count":10},{"language":"default","tag":"Platform","count":10},{"language":"default","tag":"Messaging","count":9},{"language":"default","tag":"Incidents","count":8},{"language":"default","tag":"Workflows","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":false},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","href":"/docs/_mintlify/custom/tracer/5463e43fad15ff95/custom.css"},{"filePath":"sidebar.css","content":":root{--opensre-sidebar-muted:#737373;--opensre-sidebar-link:#a3a3a3;--opensre-sidebar-link-hover:#e5e5e5;--opensre-sidebar-active-bg:rgba(255, 255, 255, 0.08)}:root:not(.dark){--opensre-sidebar-muted:#a3a3a3;--opensre-sidebar-link:#525252;--opensre-sidebar-link-hover:#171717;--opensre-sidebar-active-bg:rgba(0, 0, 0, 0.06)}#navigation-items .sidebar-group-header,#navigation-items .sidebar-group-header h5,#navigation-items [class*=sidebar-group-header],#sidebar .sidebar-group-header,#sidebar .sidebar-group-header h5,#sidebar [class*=SidebarGroup]>:first-child,#sidebar [class*=sidebar-group-header]{font-family:\"Britti Sans Trial\",sans-serif!important;font-size:11px!important;font-weight:600!important;letter-spacing:.08em!important;text-transform:uppercase!important;line-height:1.4!important;color:var(--opensre-sidebar-muted)!important;margin-top:1.25rem!important;margin-bottom:.35rem!important;padding-top:.25rem!important}#navigation-items .sidebar-group:first-child .sidebar-group-header,#sidebar .sidebar-group:first-child .sidebar-group-header,#sidebar nav>.sidebar-group:first-child .sidebar-group-header{margin-top:.25rem!important}#navigation-items a:not([href*=sign-up]),#sidebar a:not([href*=sign-up]){font-family:\"Britti Sans Trial\",sans-serif!important;font-size:14px!important;font-weight:400!important;letter-spacing:normal!important;color:var(--opensre-sidebar-link)!important;border-radius:.375rem!important}#navigation-items a:not([href*=sign-up]):hover,#sidebar a:not([href*=sign-up]):hover{color:var(--opensre-sidebar-link-hover)!important}#navigation-items [data-active=true]>a,#navigation-items a.active,#navigation-items a[aria-current=page],#navigation-items a[data-active=true],#navigation-items li[data-active=true]>a,#sidebar [data-active=true]>a,#sidebar a.active,#sidebar a[aria-current=page],#sidebar a[data-active=true],#sidebar li[data-active=true]>a{color:#fff!important;background:var(--opensre-sidebar-active-bg)!important;font-weight:500!important}:root:not(.dark) #navigation-items [data-active=true]>a,:root:not(.dark) #navigation-items a.active,:root:not(.dark) #navigation-items a[aria-current=page],:root:not(.dark) #navigation-items a[data-active=true],:root:not(.dark) #navigation-items li[data-active=true]>a,:root:not(.dark) #sidebar [data-active=true]>a,:root:not(.dark) #sidebar a.active,:root:not(.dark) #sidebar a[aria-current=page],:root:not(.dark) #sidebar a[data-active=true],:root:not(.dark) #sidebar li[data-active=true]>a{color:#171717!important}header img[src*=\"Tracer-Head-Black.png\"],header img[src*=\"Tracer-Head-White.png\"],nav img[src*=\"Tracer-Head-Black.png\"],nav img[src*=\"Tracer-Head-White.png\"]{width:1rem!important;height:1rem!important;object-fit:contain!important}html.dark img[src*=\"Tracer-Head-Black.png\"]{filter:brightness(0) invert(1)!important}.toc-custom-actions{margin-top:.75rem;padding-top:.75rem;border-top:1px solid rgba(0,0,0,.1)}html.dark .toc-custom-actions{border-top-color:rgba(255,255,255,.1)}.toc-custom-action{display:flex;align-items:center;gap:.5rem;padding-left:.25rem;font-size:.875rem;line-height:1.75rem;color:inherit}.toc-custom-action span{display:inline-block}#table-of-contents-content,[class*=table-of-contents],[data-testid=table-of-contents],nav[aria-label*=\"Table of contents\"]{padding-left:0!important}#table-of-contents-content ul,[class*=table-of-contents] ul,[data-testid=table-of-contents] ul,nav[aria-label*=\"Table of contents\"] ul{padding-left:0!important;margin-left:0!important}#table-of-contents-content a,[class*=table-of-contents] a,[data-testid=table-of-contents] a,nav[aria-label*=\"Table of contents\"] a{padding-left:.25rem!important;margin-left:0!important}[class*=right-sidebar] #table-of-contents-content,[class*=right-sidebar] [class*=table-of-contents],[class*=right-sidebar] [data-testid=table-of-contents],[class*=right-sidebar] nav[aria-label*=\"Table of contents\"]{text-align:left!important;align-items:flex-start!important;justify-content:flex-start!important}[class*=right-sidebar] #table-of-contents-content a,[class*=right-sidebar] [class*=table-of-contents] a,[class*=right-sidebar] [data-testid=table-of-contents] a,[class*=right-sidebar] nav[aria-label*=\"Table of contents\"] a{display:block!important;width:100%!important;text-align:left!important}"}],"page":{"pagePath":"integrations/databases/mariadb","slug":"/integrations/databases/mariadb","pageMetadata":{"title":"MariaDB","description":"Connect MariaDB so OpenSRE can diagnose database issues","href":"/integrations/databases/mariadb"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Connect MariaDB so OpenSRE can diagnose database issues\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsx(_components.p,{children:`OpenSRE uses MariaDB diagnostics to investigate database issues — global status, process list, slow queries, InnoDB status, and replication. Operations are read-only.`}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`MariaDB instance reachable from OpenSRE`}),`\n`,_jsxs(_components.li,{children:[`A user with monitoring privileges (`,_jsx(_components.code,{children:`PROCESS`}),`, `,_jsx(_components.code,{children:`performance_schema`}),` / InnoDB status as needed)`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`setup`,children:`Setup`}),`\n`,_jsx(Heading,{level:`3`,id:`option-1-interactive-cli`,children:`Option 1: Interactive CLI`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`opensre`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` integrations`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` setup`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mariadb`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`option-2-environment-variables`,children:`Option 2: Environment variables`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`MARIADB_HOST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`your-mariadb-host`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`MARIADB_PORT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`3306`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`MARIADB_DATABASE`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`your-database`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`MARIADB_USERNAME`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`opensre_readonly`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`MARIADB_PASSWORD`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`your-password`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`MARIADB_SSL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`true`})]}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MARIADB_HOST`})}),_jsx(_components.td,{children:`—`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Required.`}),` Hostname or IP`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MARIADB_PORT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`3306`})}),_jsx(_components.td,{children:`Port`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MARIADB_DATABASE`})}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Target database`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MARIADB_USERNAME`})}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MARIADB_PASSWORD`})}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MARIADB_SSL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsx(_components.td,{children:`Boolean TLS enable (unlike MySQL’s mode strings)`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`option-3-persistent-store`,children:`Option 3: Persistent store`}),`\n`,_jsxs(_components.p,{children:[`Add an active `,_jsx(_components.code,{children:`mariadb`}),` record to `,_jsx(_components.code,{children:`~/.opensre/integrations.json`}),` with host, port, database, username, password, and `,_jsx(_components.code,{children:`ssl`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`credentials`,children:`Credentials`}),`\n`,_jsx(Heading,{level:`3`,id:`recommended-user-setup`,children:`Recommended user setup`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`CREATE`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` USER`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` '`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`opensre_readonly`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`'@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'%'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` IDENTIFIED `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`BY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'secure-password'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`GRANT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` PROCESS `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`ON`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` *`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` TO`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'opensre_readonly'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'%'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`GRANT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SLAVE MONITOR `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`ON`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` *`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` TO`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'opensre_readonly'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'%'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`GRANT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` SELECT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` ON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` performance_schema.`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` TO`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'opensre_readonly'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'%'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`GRANT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` SELECT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` ON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` your_database.`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` TO`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'opensre_readonly'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'%'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`FLUSH PRIVILEGES;`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Four notes on these grants, each confirmed against a real server:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`information_schema`}),` needs no explicit grant — MariaDB exposes it automatically based on\na user’s other privileges. `,_jsx(_components.code,{children:`GRANT SELECT ON information_schema.*`}),` is rejected outright\n(`,_jsx(_components.code,{children:`ERROR 1044`}),`) and aborts the script before later grants run.`]}),`\n`,_jsxs(_components.li,{children:[`The grant on the `,_jsx(_components.strong,{children:`target database`}),` (`,_jsx(_components.code,{children:`MARIADB_DATABASE`}),`) is required — the connector\nselects it as the default schema on connect, and without it every tool call fails with\n`,_jsx(_components.code,{children:`Access denied ... to database`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`The replication-status tool (`,_jsx(_components.code,{children:`SHOW ALL SLAVES STATUS`}),`) needs `,_jsx(_components.code,{children:`SLAVE MONITOR`}),`\n— MySQL’s `,_jsx(_components.code,{children:`REPLICATION CLIENT`}),` name doesn’t carry the same privilege on MariaDB (`,_jsx(_components.code,{children:`SHOW GRANTS`}),` reports it back as `,_jsx(_components.code,{children:`BINLOG MONITOR`}),`, a related but different privilege that does\nnot cover replica status). Without it, that one tool fails with `,_jsx(_components.code,{children:`Access denied; you need (at least one of) the SLAVE MONITOR privilege(s)`}),` even though `,_jsx(_components.code,{children:`integrations verify mariadb`}),` and the other four tools pass. `,_jsx(_components.code,{children:`SLAVE MONITOR`}),` requires `,_jsx(_components.strong,{children:`MariaDB 10.5.9+`}),`\n(the privilege didn’t exist before then); on any older MariaDB, grant `,_jsx(_components.code,{children:`SUPER`}),` instead —\nit has covered `,_jsx(_components.code,{children:`SHOW SLAVE STATUS`}),` across every MariaDB version.`]}),`\n`,_jsxs(_components.li,{children:[`Slow queries need `,_jsx(_components.code,{children:`performance_schema`}),`, which is enabled by default on the official\n`,_jsx(_components.code,{children:`mariadb`}),` Docker image but often disabled in production `,_jsx(_components.code,{children:`my.cnf`}),` — check `,_jsx(_components.code,{children:`SELECT @@performance_schema`}),` if the slow-queries tool returns an empty note.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`quick-local-test-with-docker`,children:`Quick local test with Docker`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mariadb-dev`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -p`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 127.0.0.1:3307:3306`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -e`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` MARIADB_ROOT_PASSWORD=rootpass`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -e`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` MARIADB_DATABASE=app_db`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mariadb:11`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --performance-schema=ON`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`i`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`0`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`until`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` logs`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mariadb-dev`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` 2>\u00261`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` grep`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -q`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"port: 3306\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`do`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` i`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`$((`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` +`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [ `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` -ge`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 30`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ] \u0026\u0026 { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`echo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"ERROR: MariaDB never became ready\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` >\u00262`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`exit`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; }`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` sleep`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 2`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`done`})}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Like MySQL, the official MariaDB image starts a `,_jsx(_components.strong,{children:`temporary`}),` init-only server before the\nreal one — its own log line reports `,_jsx(_components.code,{children:`port: 0`}),`. A readiness check against the socket (e.g.\n`,_jsx(_components.code,{children:`mariadb-admin ping`}),`) can succeed against that temporary server and return moments before it\nshuts down and the real server restarts, causing the very next command to fail with `,_jsx(_components.code,{children:`Access denied`}),` or a socket error. Waiting for the final server’s own log line (`,_jsx(_components.code,{children:`port: 3306`}),`) avoids\nthe race.`]})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`13`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` exec`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mariadb-dev`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mariadb`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -uroot`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -prootpass`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -e`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`CREATE USER 'opensre_readonly'@'%' IDENTIFIED BY 'verifypass';`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`GRANT PROCESS ON *.* TO 'opensre_readonly'@'%';`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`GRANT SLAVE MONITOR ON *.* TO 'opensre_readonly'@'%';`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`GRANT SELECT ON performance_schema.* TO 'opensre_readonly'@'%';`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`GRANT SELECT ON app_db.* TO 'opensre_readonly'@'%';`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`FLUSH PRIVILEGES;`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` exec`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mariadb-dev`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mariadb`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -uroot`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -prootpass`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -D`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` app_db`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -e`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`CREATE TABLE orders (id INT PRIMARY KEY, amount DECIMAL(10,2));`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`INSERT INTO orders VALUES (1, 42.50), (2, 17.00);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`SELECT SLEEP(2);`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` >`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` /dev/null`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` MARIADB_HOST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`127.0.0.1`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` MARIADB_PORT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`3307`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` MARIADB_DATABASE`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`app_db`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` MARIADB_USERNAME`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`opensre_readonly`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` MARIADB_PASSWORD`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`verifypass`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` MARIADB_SSL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`false`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Verify:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`opensre`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` integrations`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` verify`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mariadb`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SERVICE │ SOURCE │ STATUS │ DETAIL`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`mariadb │ local env │ ✓ passed │ Connected to MariaDB 11.8.8-MariaDB-ubu2404`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` │ │ │ target database: app_db.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Chat sessions (unlike `,_jsx(_components.code,{children:`opensre integrations verify`}),`) only fall through to env\nvars when the store has no records at all — any existing record, for any service, blocks\nenv-var resolution entirely. Point `,_jsx(_components.code,{children:`OPENSRE_INTEGRATIONS_STORE_PATH`}),` at a path inside a\nfresh empty directory instead, so your real config is never read or written and the\n`,_jsx(_components.code,{children:`MARIADB_*`}),` vars above are the only source of connection info:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` OPENSRE_DEMO_STORE_DIR`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"$(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`mktemp`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` /tmp/opensre-mariadb-demo.XXXXXX)\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` OPENSRE_INTEGRATIONS_STORE_PATH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$OPENSRE_DEMO_STORE_DIR`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/integrations.json\"`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Now ask the agent about the seeded slow query:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`opensre`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Ask: `,_jsx(_components.em,{children:`Does the app_db MariaDB instance have any slow queries?`})]}),`\n`,_jsxs(_components.p,{children:[`Against this exact local instance the agent calls all 5 registered tools — global\nstatus, process list, replication status, slow queries, and InnoDB status — and\nfinds the one outlier: a `,_jsx(_components.code,{children:`SELECT SLEEP(?)`}),` statement at ~2001 ms in\n`,_jsx(_components.code,{children:`performance_schema`}),`, with every other engine, lock, and connection metric within\nnormal bounds.`]}),`\n`,_jsx(_components.p,{children:`Teardown:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` rm`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -f`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mariadb-dev`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`rm`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -rf`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$OPENSRE_DEMO_STORE_DIR`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`unset`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` OPENSRE_DEMO_STORE_DIR`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` OPENSRE_INTEGRATIONS_STORE_PATH`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`unset`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` MARIADB_HOST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` MARIADB_PORT`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` MARIADB_DATABASE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` MARIADB_USERNAME`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` MARIADB_PASSWORD`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` MARIADB_SSL`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`tools`,children:`Tools`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Tool`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`get_mariadb_global_status`})}),_jsx(_components.td,{children:`Global status / health counters`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`get_mariadb_process_list`})}),_jsx(_components.td,{children:`Current process list`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`get_mariadb_slow_queries`})}),_jsxs(_components.td,{children:[`Slow query digests from `,_jsx(_components.code,{children:`performance_schema`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`get_mariadb_innodb_status`})}),_jsx(_components.td,{children:`InnoDB engine status`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`get_mariadb_replication_status`})}),_jsx(_components.td,{children:`Replication / slave status`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`verify`,children:`Verify`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`opensre`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` integrations`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` verify`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mariadb`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Symptom`}),_jsx(_components.th,{children:`Fix`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Connection refused`})}),_jsx(_components.td,{children:`Check host, port, firewall`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SSL errors`})}),_jsxs(_components.td,{children:[`Confirm `,_jsx(_components.code,{children:`MARIADB_SSL`}),` matches server TLS config (default is on)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Slow queries empty`})}),_jsxs(_components.td,{children:[`Enable `,_jsx(_components.code,{children:`performance_schema`}),` and grant SELECT`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Replication empty`})}),_jsx(_components.td,{children:`Expected on standalone primary`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`security`,children:`Security`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Use a dedicated read-only user.`}),`\n`,_jsxs(_components.li,{children:[`Keep TLS enabled (`,_jsx(_components.code,{children:`MARIADB_SSL=true`}),`) in production.`]}),`\n`,_jsx(_components.li,{children:`Store credentials out of source control.`}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"MariaDB","description":"Connect MariaDB so OpenSRE can diagnose database issues","href":"/integrations/databases/mariadb"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Setup","slug":"setup","depth":2,"children":[{"title":"Option 1: Interactive CLI","slug":"option-1-interactive-cli","depth":3,"children":[]},{"title":"Option 2: Environment variables","slug":"option-2-environment-variables","depth":3,"children":[]},{"title":"Option 3: Persistent store","slug":"option-3-persistent-store","depth":3,"children":[]}]},{"title":"Credentials","slug":"credentials","depth":2,"children":[{"title":"Recommended user setup","slug":"recommended-user-setup","depth":3,"children":[]},{"title":"Quick local test with Docker","slug":"quick-local-test-with-docker","depth":3,"children":[]}]},{"title":"Tools","slug":"tools","depth":2,"children":[]},{"title":"Verify","slug":"verify","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Security","slug":"security","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/tracer/3640b424f7229c9e/toc-actions.js","/docs/_mintlify/custom/tracer/3efb8263c18eafe6/public/radar-chart.js"],"subdomain":"tracer","siteName":"OpenSRE Documentation","title":"MariaDB - OpenSRE Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-28T16:28:41.381Z","originalFileLocation":"integrations/databases/mariadb.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Connect MariaDB so OpenSRE can diagnose database issues\">\u003cmeta data-mint-head name=\"application-name\" content=\"OpenSRE Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"MariaDB - OpenSRE Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Connect MariaDB so OpenSRE can diagnose database issues\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OpenSRE Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://opensre.com/docs/integrations/databases/mariadb\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tracer.mintlify.app/_mintlify/api/og/v2?division=Databases\u0026amp;title=MariaDB\u0026amp;description=Connect+MariaDB+so+OpenSRE+can+diagnose+database+issues\u0026amp;theme=ecba481d104c5d7db3f22fd8\u0026amp;signature=e5445ad29838b8d518bbd916177bd6e455574905b0e2cabe11ab96a4f82baeec\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"MariaDB - OpenSRE Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Connect MariaDB so OpenSRE can diagnose database issues\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tracer.mintlify.app/_mintlify/api/og/v2?division=Databases\u0026amp;title=MariaDB\u0026amp;description=Connect+MariaDB+so+OpenSRE+can+diagnose+database+issues\u0026amp;theme=ecba481d104c5d7db3f22fd8\u0026amp;signature=e5445ad29838b8d518bbd916177bd6e455574905b0e2cabe11ab96a4f82baeec\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OpenSRE Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://opensre.com/docs/integrations/databases/mariadb\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/integrations/databases/mariadb.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://opensre.com/#organization\",\"name\":\"OpenSRE Documentation\",\"url\":\"https://opensre.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tracer/rmdYtNSoc9Q5D-5B/images/opensre-logo-black.svg?fit=max\u0026auto=format\u0026n=rmdYtNSoc9Q5D-5B\u0026q=85\u0026s=7ea8db5a1f8e1665db7544632022e298\"}},{\"@type\":\"WebSite\",\"@id\":\"https://opensre.com/docs#website\",\"name\":\"OpenSRE Documentation\",\"url\":\"https://opensre.com/docs\",\"publisher\":{\"@id\":\"https://opensre.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://opensre.com/docs/integrations/databases/mariadb#webpage\",\"url\":\"https://opensre.com/docs/integrations/databases/mariadb\",\"name\":\"MariaDB\",\"description\":\"Connect MariaDB so OpenSRE can diagnose database issues\",\"dateModified\":\"2026-09-28T16:28:41.381Z\",\"isPartOf\":{\"@id\":\"https://opensre.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://opensre.com/docs/integrations/databases/mariadb#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://opensre.com/docs/integrations/databases/mariadb#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Integrations\",\"item\":\"https://opensre.com/docs/integrations/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Databases\",\"item\":\"https://opensre.com/docs/integrations/databases/azure-sql\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"MariaDB\",\"item\":\"https://opensre.com/docs/integrations/databases/mariadb\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://opensre.com/docs/integrations/databases/mariadb#article\",\"headline\":\"MariaDB\",\"name\":\"MariaDB\",\"description\":\"Connect MariaDB so OpenSRE can diagnose database issues\",\"url\":\"https://opensre.com/docs/integrations/databases/mariadb\",\"mainEntityOfPage\":{\"@id\":\"https://opensre.com/docs/integrations/databases/mariadb#webpage\"},\"dateModified\":\"2026-09-28T16:28:41.381Z\",\"publisher\":{\"@id\":\"https://opensre.com/#organization\"},\"isPartOf\":{\"@id\":\"https://opensre.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OpenSRE Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OpenSRE Documentation","nav":{"global":null,"directory":"card","groups":[{"group":"Welcome","pages":[{"title":"Welcome to OpenSRE","href":"/index"},{"title":"Showcase","href":"/getting-started/showcase"},{"title":"Features","href":"/getting-started/features"},{"title":"FAQ","href":"/guides/faq"}]},{"group":"Get started","pages":[{"title":"Quickstart","href":"/getting-started/quickstart"},{"title":"Install OpenSRE","href":"/install/index"},{"title":"Local and on-prem setup","href":"/install/install-local"},{"title":"Enterprise setup (OpenSRE Cloud)","href":"/install/install-enterprise"},{"group":"Platforms","expanded":false,"pages":[{"title":"macOS","href":"/install/macos"},{"title":"Linux","href":"/install/linux-local"},{"title":"Windows","href":"/install/windows-local"},{"title":"Docker","href":"/install/docker"}]},{"title":"Environment Variables","href":"/install/environment-variables"},{"title":"Sync to your own object store","href":"/install/remote-sync"}]},{"group":"CI/CD","pages":[{"title":"CI/CD with OpenSRE","href":"/cicd/overview"},{"title":"CI/CD analytics demo","href":"/cicd/cicd-analytics-demo"},{"title":"Fix GitHub CI","href":"/cicd/github-ci-fix"},{"title":"Keep CI green with an agent","href":"/cicd/ci-repair-agent"},{"title":"Scan CI health across repositories","href":"/cicd/github-ci-health-scan"}]},{"group":"Using the shell","pages":[{"title":"Shell commands","href":"/getting-started/interactive-shell-commands"},{"title":"Agent with connected tools","href":"/getting-started/interactive-shell-assistant"},{"title":"Goals","href":"/getting-started/goals"}]},{"group":"Guides","pages":[{"title":"OTel payment auto-triage pilot","href":"/guides/otel-payment-triage"}]},{"group":"Run it anywhere","pages":[{"title":"Deployment","href":"/guides/deployment"},{"title":"Headless CLI","href":"/guides/headless-cli"},{"title":"HTTP API","href":"/guides/api"},{"title":"Python API","href":"/guides/python-api"},{"title":"Hosting the Agent","href":"/guides/hosting-the-agent"}]},{"group":"Platform","pages":[{"title":"LLM Providers","href":"/platform/llm-providers"},{"title":"Multi-instance integrations","href":"/platform/multi-instance-integrations"},{"title":"Masking Sensitive Identifiers","href":"/platform/masking"},{"title":"Interactive Shell Privacy","href":"/platform/interactive-shell-privacy"},{"title":"Session History","href":"/platform/sessions"},{"title":"Principal-scoped storage (Slack and Discord)","href":"/platform/principal-scoped-storage"},{"title":"Long-Term Memory","href":"/platform/memory"},{"title":"Work Management","href":"/platform/work-management"},{"title":"Scheduled Deliveries (Cron)","href":"/platform/cron"},{"title":"Closed-Loop Learning","href":"/platform/closed-loop-learning"}]},{"group":"Integrations","pages":[{"title":"Integrations overview","href":"/integrations/index"},{"group":"Monitoring","expanded":false,"pages":[{"title":"Azure Monitor","href":"/integrations/monitoring/azure-monitor"},{"title":"Better Stack Telemetry","href":"/integrations/monitoring/betterstack"},{"title":"Coralogix","href":"/integrations/monitoring/coralogix"},{"title":"Datadog","href":"/integrations/monitoring/datadog"},{"title":"Grafana","href":"/integrations/monitoring/grafana"},{"title":"Grafana Annotations","href":"/integrations/monitoring/grafana_annotations"},{"title":"groundcover","href":"/integrations/monitoring/groundcover"},{"title":"Honeycomb","href":"/integrations/monitoring/honeycomb"},{"title":"New Relic","href":"/integrations/monitoring/new_relic"},{"title":"OpenObserve","href":"/integrations/monitoring/openobserve"},{"title":"PostHog","href":"/integrations/monitoring/posthog"},{"title":"PostHog (MCP)","href":"/integrations/monitoring/posthog-mcp"},{"title":"SigNoz","href":"/integrations/monitoring/signoz"},{"title":"Splunk","href":"/integrations/monitoring/splunk"},{"title":"Grafana Tempo","href":"/integrations/monitoring/tempo"},{"title":"VictoriaLogs","href":"/integrations/monitoring/victoria_logs"}]},{"group":"Incidents","expanded":false,"pages":[{"title":"Alertmanager","href":"/integrations/incidents/alertmanager"},{"title":"Runbook-guided investigations","href":"/integrations/incidents/runbook-guided-investigations"},{"title":"incident.io","href":"/integrations/incidents/incident_io"},{"title":"PagerDuty","href":"/integrations/incidents/pagerduty"},{"title":"Sentry","href":"/integrations/incidents/sentry"},{"title":"Sentry (MCP)","href":"/integrations/incidents/sentry-mcp"},{"title":"ServiceNow","href":"/integrations/incidents/servicenow"},{"title":"Fix a Sentry issue","href":"/integrations/incidents/fix-sentry-issue"}]},{"group":"Cloud","expanded":false,"pages":[{"title":"Argo CD","href":"/integrations/cloud/argocd"},{"title":"AWS","href":"/integrations/cloud/aws"},{"title":"AWS Lambda","href":"/integrations/cloud/aws_lambda"},{"title":"AWS CloudTrail","href":"/integrations/cloud/cloudtrail_events"},{"title":"AWS EC2","href":"/integrations/cloud/ec2"},{"title":"AWS ELB","href":"/integrations/cloud/elb"},{"title":"Helm (CLI)","href":"/integrations/cloud/helm"},{"title":"Kubernetes","href":"/integrations/cloud/kubernetes"},{"title":"Railway","href":"/integrations/cloud/railway"},{"title":"AWS S3","href":"/integrations/cloud/s3"},{"title":"AWS SQS","href":"/integrations/cloud/sqs_queues"},{"title":"Vercel","href":"/integrations/cloud/vercel"}]},{"group":"Code and CI","expanded":false,"pages":[{"title":"Architecture audit tool","href":"/integrations/code/architecture-audit-tool"},{"title":"Structured file reads","href":"/integrations/code/structured-file-tool"},{"title":"Counting files","href":"/integrations/code/counting-files"},{"title":"Bitbucket","href":"/integrations/code/bitbucket"},{"title":"GitHub","href":"/integrations/code/github"},{"title":"Fix GitHub security and quality findings","href":"/integrations/code/github-security-fix"},{"title":"Resolve merge conflicts","href":"/integrations/code/resolve-merge-conflicts"},{"title":"GitHub workflow tools","href":"/integrations/code/github-workflow-tools"},{"title":"GitHub Actions","href":"/integrations/code/github-actions"},{"title":"GitLab","href":"/integrations/code/gitlab"},{"title":"Jenkins","href":"/integrations/code/jenkins"},{"title":"Pi coding tasks","href":"/integrations/code/pi-coding"}]},{"group":"Collaboration","expanded":false,"pages":[{"title":"Google Docs","href":"/integrations/collaboration/google-docs"},{"title":"Jira","href":"/integrations/collaboration/jira"},{"title":"Trello","href":"/integrations/collaboration/trello"}]},{"group":"Messaging","expanded":false,"pages":[{"title":"Messaging","href":"/integrations/messaging/index"},{"title":"SMTP","href":"/integrations/messaging/smtp"},{"title":"Buzz","href":"/integrations/messaging/buzz"},{"title":"Slack","href":"/integrations/messaging/slack"},{"title":"Discord","href":"/integrations/messaging/discord"},{"title":"Telegram","href":"/integrations/messaging/telegram"},{"title":"Rocket.Chat","href":"/integrations/messaging/rocketchat"},{"title":"WhatsApp","href":"/integrations/messaging/whatsapp"},{"title":"Twilio SMS","href":"/integrations/messaging/twilio-sms"}]},{"group":"Databases","expanded":false,"pages":[{"title":"Azure SQL","href":"/integrations/databases/azure-sql"},{"title":"ClickHouse","href":"/integrations/databases/clickhouse"},{"title":"AWS Elasticsearch (AWS ES)","description":"Connect Amazon OpenSearch Service (AWS ES) so OpenSRE can search application logs","href":"/integrations/databases/elasticsearch"},{"title":"MariaDB","href":"/integrations/databases/mariadb"},{"title":"MongoDB","description":"Connect MongoDB so OpenSRE can diagnose database issues during incidents","href":"/integrations/databases/mongodb"},{"title":"MongoDB Atlas","href":"/integrations/databases/mongodb-atlas"},{"title":"MySQL","href":"/integrations/databases/mysql"},{"title":"OpenSearch / Elasticsearch","href":"/integrations/databases/opensearch"},{"title":"PostgreSQL","href":"/integrations/databases/postgresql"},{"title":"AWS RDS","href":"/integrations/databases/rds"},{"title":"Redis","href":"/integrations/databases/redis"},{"title":"Snowflake","href":"/integrations/databases/snowflake"},{"title":"Supabase","href":"/integrations/databases/supabase"}]},{"group":"Workflows","expanded":false,"pages":[{"title":"Airflow","href":"/integrations/workflows/airflow"},{"title":"Dagster","href":"/integrations/workflows/dagster"},{"title":"Kafka","href":"/integrations/workflows/kafka"},{"title":"Prefect","href":"/integrations/workflows/prefect"},{"title":"RabbitMQ","href":"/integrations/workflows/rabbitmq"},{"title":"Temporal","href":"/integrations/workflows/temporal"}]}]},{"group":"Community","pages":[{"title":"Community Giveaway","href":"/guides/bi-weekly-giveaway"},{"title":"Pull request review flow","href":"/guides/pr-review-flow"}]}]},"basePath":"","title":"MariaDB - OpenSRE Documentation","buildId":"dpl_GWQzn6k13MqphA3qck3hQKoQXDzM","deploymentId":"dpl_GWQzn6k13MqphA3qck3hQKoQXDzM","dynamics":[],"chunks":[]}