一分钟教你OpenClaw连接MySQL数据库:TaoToken统一Key配置与连通性验证
1. OpenClaw 连 MySQL 到底在连什么先分清元数据库和业务库很多人第一次听到「OpenClaw 连接 MySQL」脑子里浮现的是同一个画面装个驱动、填个地址、跑通就完事。实际动手才发现OpenClaw 连 MySQL 至少分两条完全不同的路径配置位置、验证方式、踩坑点都不一样。搞混了这两条路径就会出现「配置明明填了却查不到数据」「AI 说连上了但对话里读不到表」这类让人抓狂的情况。第一条路径是把 MySQL 当作 OpenClaw 自身的元数据库。OpenClaw 默认用 SQLite 存对话历史、用户配置、会话状态这些内部数据数据量小的时候 SQLite 完全够用。但当你把 OpenClaw 部署成团队共享服务或者对话历史积累到几十万条SQLite 的单文件锁和并发瓶颈就暴露了。这时候把元数据库换成 MySQL让 OpenClaw 的持久层走标准的关系型数据库是更稳的选择。这条路径改的是 OpenClaw 主配置里的 database 段改完要跑初始化命令建表。第二条路径是通过 Skill 让 AI 具备查询外部业务数据库的能力。你的订单表、用户表、埋点数据躺在自己的 MySQL 里你希望用自然语言问「上周新增用户多少」「哪些订单还没发货」OpenClaw 通过一个数据库查询技能去连你的业务库把 SQL 结果拿回来喂给模型。这条路径改的是 Skill 的 secrets 配置和 OpenClaw 自身的元数据库没有半点关系。两条路径的共同点是都需要一个稳定、可审计、权限可控的 API 通道来承载模型调用。OpenClaw 本身不生产模型能力它要把你的自然语言转成 SQL、把查询结果转成人类可读的回答这些都要调用大模型。如果模型通道配置得乱七八糟Key 散落在各个配置文件里你连「到底是数据库连不上还是模型调不通」都分不清。这就是 TaoToken 统一 Key 要解决的问题把模型调用的入口收敛成一个 Base URL 加一个 Key让 OpenClaw 的模型请求走统一通道数据库连接的问题就纯粹是数据库连接的问题排障边界清晰。这篇内容面向的是需要让 AI 工具安全访问数据库的开发者。不管你是想把 OpenClaw 的元数据库换成 MySQL还是想让它查你的业务库我都会给出可复制的配置片段、连通性验证动作以及真实会撞上的报错和排查路径。核心检索词就三个OpenClaw、MySQL、数据库连接配置。适合谁适合已经装好 OpenClaw、手里有 MySQL 实例、想让 AI 安全读写数据的后端或全栈开发者。小白也能跟因为每一步都有完整命令和预期输出。先说清楚一个前提下面所有配置里的模型通道我都统一走 TaoToken 的 API 地址https://taotoken.net/apiKey 从控制台生成。这样你的 OpenClaw 无论连哪个 MySQL模型调用这一层是稳定的、可替换的、可审计的。数据库账号则严格遵循最小权限原则读业务库一律用只读账号。这两条线分开管后面出问题才好定位。2. 前置准备TaoToken 统一 Key 与 OpenClaw 模型通道配置在碰 MySQL 之前先把 OpenClaw 的模型通道配好。原因很实际OpenClaw 的数据库 Skill 在工作时需要先把你的自然语言转成 SQL这个转换是模型干的查询结果回来之后把冷冰冰的表格转成一段人话也是模型干的。如果模型通道没配通你连「数据库 Skill 到底有没有被触发」都验证不了。所以顺序是先让 OpenClaw 能稳定调模型再让它去连数据库。TaoToken 在这里扮演的角色是统一模型入口。你不需要在 OpenClaw 里分别配置 OpenAI、Anthropic、通义、豆包各自的 Key 和地址只需要一个 Base URL 和一个 API Key模型 ID 按需切换。对 OpenClaw 这种会频繁调用模型的工具来说统一入口的好处是换模型不用改代码加模型不用加配置出问题只看一个通道。第一步拿到 Key。打开 TaoToken 控制台进入 API Keys 页面创建一个新 Key。建议按用途命名比如openclaw-dev、openclaw-prod方便后面审计哪个 Key 在跑什么环境。创建后立刻复制保存页面刷新后就看不到了。第二步确认你要用的模型 ID。OpenClaw 的模型配置里需要填具体的模型标识比如claude-sonnet-4-5、gpt-4o这类。你可以在模型对话页面先手动试一次确认这个模型在你的账号下可用、响应正常再写进 OpenClaw 配置。这一步别省我见过太多人配置里填了个自己账号没权限的模型然后花两小时排查数据库连接。第三步把模型通道写进 OpenClaw 配置。OpenClaw 的模型配置通常在~/.openclaw/config.yaml或~/.openclaw/openclaw.json里。以 YAML 为例模型段大概长这样model: provider: openai-compatible base_url: https://taotoken.net/api api_key: ${TAOTOKEN_API_KEY} model_id: claude-sonnet-4-5 timeout: 120 max_retries: 3这里有几个点要展开说。provider填openai-compatible是因为 TaoToken 的 API 兼容 OpenAI 的请求格式OpenClaw 用这个 provider 就能直接对接。base_url就是https://taotoken.net/api注意不要多加路径OpenClaw 会自己拼/v1/chat/completions这类端点。api_key用环境变量引用不要把 Key 明文写进配置文件这是基本的安全习惯。model_id填你第二步验证过的模型。timeout给到 120 秒因为数据库查询加模型推理有时候会慢超时太短会误报失败。max_retries给 3网络抖动时自动重试。第四步把 Key 写进环境变量。在~/.bashrc或~/.zshrc里加一行export TAOTOKEN_API_KEYsk-你的实际Key然后source ~/.bashrc让它生效。如果你用 systemd 跑 OpenClaw 服务记得在 service 文件里也加EnvironmentTAOTOKEN_API_KEY...否则服务进程读不到这个变量。第五步验证模型通道。OpenClaw 一般有自检命令比如openclaw doctor或openclaw model test。跑一下看它能不能成功调通模型。如果这一步就报 401说明 Key 不对或没生效报连接超时说明网络到taotoken.net有问题报模型不存在说明model_id填错了。把模型通道验证通过再往下走这是后面所有数据库操作的基础。这里插一句关于 Coding Plan 的说明。如果你打算让 OpenClaw 长期跑编码类或 Agent 类任务比如自动生成 SQL、自动分析查询结果、多轮迭代排查数据问题那模型调用量会比较大。TaoToken 的 Coding Plan 是包月制的适合这种高频场景比按量付费更可控。你可以在控制台里看下自己的用量曲线如果每天调用次数稳定在高位切到 Coding Plan 更划算。这个不影响当前配置只是长期使用的成本优化。前置准备做完你的 OpenClaw 已经能稳定调模型了。接下来才是 MySQL 的部分。记住这个顺序模型通道是地基数据库连接是上层建筑。地基不稳上层怎么调都是白费。3. 可复制配置元数据库与业务库 Skill 两套片段现在进入正题给你两套可直接复制的配置。第一套是把 MySQL 配成 OpenClaw 的元数据库第二套是通过 Skill 连外部业务库。两套配置的路径、字段、验证方式都不同我分开写清楚。3.1 元数据库配置改 config.yaml 的 database 段先确认你的 MySQL 里已经建好了库。OpenClaw 不会自动帮你建 database它只会建表。所以先连上 MySQL 执行CREATE DATABASE openclaw DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER openclaw_app% IDENTIFIED BY 你的强密码; GRANT ALL PRIVILEGES ON openclaw.* TO openclaw_app%; FLUSH PRIVILEGES;注意这里给的是ALL PRIVILEGES因为元数据库是 OpenClaw 自己要读写的它需要建表、改表、增删改查。但权限范围严格限制在openclaw.*这个库不要给全局权限。字符集用utf8mb4因为对话历史里可能有 emoji 和多语言内容utf8存不下。然后编辑~/.openclaw/config.yaml把 database 段改成database: type: mysql host: 127.0.0.1 port: 3306 name: openclaw user: openclaw_app password: ${DB_PASSWORD} pool_size: 10 max_overflow: 20 pool_recycle: 3600 echo: false逐字段说明。type填mysqlOpenClaw 据此加载对应的驱动。host建议用127.0.0.1而不是localhost因为某些环境下localhost会走 Unix socket 而不是 TCP导致连接行为不一致。port默认 3306如果你改过就填实际端口。name是库名必须和上面 CREATE DATABASE 的一致。user和password是数据库账号密码同样用环境变量引用在 shell 里export DB_PASSWORD...。pool_size是连接池常驻连接数10 对单机 OpenClaw 够用。max_overflow是峰值时额外允许创建的连接数20 意味着最多同时 30 个连接。pool_recycle是连接回收时间3600 秒即一小时防止 MySQL 的wait_timeout把空闲连接掐掉后 OpenClaw 还在用死连接。echo设 false不然每条 SQL 都打日志生产环境会刷屏。配置写完跑初始化openclaw db init预期输出会列出它创建的表比如conversations、messages、users、settings这些。如果报Access denied检查账号密码和授权报Unknown database检查库名报Cant connect to MySQL server检查 host 和 port以及 MySQL 是否在跑。初始化成功后跑一次openclaw db status或直接启动 OpenClaw看它能不能正常读写。你可以发一条对话然后去 MySQL 里SELECT COUNT(*) FROM messages;看有没有新记录。有记录说明元数据库切换成功。3.2 业务库 Skill 配置secrets/database.json 片段这条路径是让 AI 查你的业务数据。先装 Skillnpx clawhublatest install database-query或者openclaw plugins install database-query装完重启网关openclaw gateway restart然后配置连接信息。推荐放在~/.openclaw/secrets/database.json和主配置分离方便单独控制权限。内容如下{ default: { type: mysql, host: 127.0.0.1, port: 3306, username: db_reader, password: your_readonly_password, database: your_business_db, charset: utf8mb4, connectTimeout: 10000 }, analytics: { type: mysql, host: 192.168.1.100, port: 3306, username: analytics_ro, password: analytics_readonly_pwd, database: warehouse, charset: utf8mb4, connectTimeout: 10000 } }这里的关键是username必须用只读账号。建只读账号的 SQLCREATE USER db_reader% IDENTIFIED BY 你的只读密码; GRANT SELECT ON your_business_db.* TO db_reader%; FLUSH PRIVILEGES;只给SELECT不给INSERT、UPDATE、DELETE、DROP。这是防止 AI 误操作的最后一道防线。模型再聪明也可能生成破坏性 SQL权限卡死比事后恢复便宜得多。connectTimeout给 10000 毫秒业务库如果跨机房网络慢一点超时太短会误判。charset同样用utf8mb4。配置写完后在 OpenClaw 对话里试一句「列出 orders 表中今天的全部订单。」如果 Skill 正常工作它会生成 SQL、执行、返回结果。如果报错看下一节的排查。3.3 模型通道与数据库配置的完整对照把两套配置和模型通道放一起看你的 OpenClaw 实际有三层连接层级配置文件关键字段用途模型通道config.yaml 的 model 段base_url、api_key、model_id调模型做 NL2SQL 和结果润色元数据库config.yaml 的 database 段host、port、name、user、password存 OpenClaw 自身数据业务库 Skillsecrets/database.jsonhost、port、username、password、database查外部业务数据三层各管各的排障时先确认模型通道通再确认元数据库通最后确认业务库 Skill 通。顺序错了你会在一堆报错里迷失。4. 连通性验证从模型调用到 SQL 查询的完整链路测试配置写完不等于跑通。这一节给你一套从模型到数据库的完整验证动作每一步都有预期结果哪一步断了立刻能定位。4.1 验证模型通道先单独测模型。用 curl 直接打 TaoToken 的 APIcurl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: 回复 OK 两个字母}], max_tokens: 10 }预期返回一个 JSONchoices[0].message.content里是OK。如果返回 401Key 不对返回 404模型 ID 不对返回超时网络到taotoken.net有问题。这一步通了说明模型通道没问题。4.2 验证元数据库连接用 OpenClaw 自带命令openclaw db status预期输出会显示当前数据库类型、连接状态、表数量。如果显示mysql且连接正常说明元数据库切换成功。你也可以直接连 MySQL 看表mysql -h 127.0.0.1 -P 3306 -u openclaw_app -p openclaw -e SHOW TABLES;应该能看到 OpenClaw 建的那些表。4.3 验证业务库 Skill在 OpenClaw 对话里发一句自然语言查询比如「统计 users 表每月的新增用户数」。观察它的行为它应该先调用模型生成 SQL再执行 SQL最后返回结果。如果它直接回答「我无法访问数据库」说明 Skill 没加载或配置没读到。如果它生成了 SQL 但执行报错说明数据库连接有问题。你也可以在 OpenClaw 的日志里看 Skill 的执行过程。日志通常在~/.openclaw/logs/下找skill或database相关的行。看到Executing SQL: SELECT ...说明 Skill 被触发了。4.4 端到端验证最完整的验证是发一条需要模型和数据库配合的查询比如「查询 id 为 1001 的用户信息并用一句话总结」。这条请求需要模型理解意图、生成 SQL、执行、再把结果转成一句话。如果返回了正确的用户信息和总结说明模型通道、业务库 Skill、结果润色全链路通了。实测下来最容易出问题的是 4.3 这一步。Skill 装了但没重启网关配置写了但路径不对只读账号没授权这三个原因占了报错的八成。下面一节专门讲这些报错。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节按真实报错来。你撞上的大概率是下面几个之一我给出原因和修法。5.1 401 Unauthorized报错长这样Error: 401 Unauthorized {error:{message:Invalid API key,type:invalid_request_error}}原因模型通道的 Key 不对或没生效。检查三处config.yaml里api_key引用的环境变量名和 shell 里 export 的是否一致systemd 服务是否加载了环境变量Key 是否被复制时带了空格或换行。修法重新生成 Key用echo $TAOTOKEN_API_KEY确认变量有值再重启 OpenClaw。5.2 local proxy failed报错长这样Error: local proxy failed: dial tcp 127.0.0.1:7890: connect: connection refused原因OpenClaw 或它的某个依赖配置了本地代理端口但那个端口没有服务在跑。常见于之前配过代理工具、后来关掉了但环境变量HTTP_PROXY、HTTPS_PROXY还留着。修法检查env | grep -i proxy把残留的代理变量 unset 掉或者在 OpenClaw 配置里显式设置no_proxy。注意这里说的是清理本地残留配置不是让你去配代理。5.3 reading choices 相关报错报错长这样Error: reading choices: unexpected end of JSON input或者Error: reading choices: invalid character looking for beginning of value原因模型 API 返回的不是预期 JSON。unexpected end of JSON input通常是响应被截断可能是超时或网络中断。invalid character 通常是返回了 HTML 页面比如网关返回了错误页而不是 JSON。修法先用 4.1 的 curl 单独测模型 API确认返回的是合法 JSON。如果 curl 正常但 OpenClaw 报这个错检查 OpenClaw 的base_url是否被错误地加了路径比如写成了https://taotoken.net/api/v1导致它拼出/api/v1/v1/chat/completions这种错误端点。5.4 OAuth 相关报错报错长这样Error: OAuth token expired或者Error: failed to refresh OAuth token原因你用的某个模型 provider 走的是 OAuth 认证而不是 API Keytoken 过期了。修法如果你在 OpenClaw 里配的是 TaoToken 的 API Key 模式不应该出现 OAuth 报错。出现说明配置里混入了其他 provider 的 OAuth 配置。检查config.yaml的 model 段确保provider是openai-compatibleapi_key是 TaoToken 的 Key没有残留的 OAuth 字段。5.5 数据库连接报错除了模型通道数据库本身也会报错。常见的有Error: Access denied for user db_readerlocalhost原因账号密码不对或者授权没生效。修法用mysql -u db_reader -p手动连一次确认密码对。如果手动能连但 OpenClaw 连不上检查secrets/database.json里的username和password是否和手动连的一致。Error: Unknown database your_business_db原因库名写错或者库不存在。修法SHOW DATABASES;确认库名。Error: Table your_business_db.orders doesnt exist原因表名写错或者 AI 生成的 SQL 里表名不对。修法确认表存在如果表名有前缀或大小写敏感在 Skill 配置里加tablePrefix或调整lower_case_table_names。5.6 排查顺序总结撞上报错时按这个顺序查先 curl 测模型 API确认模型通道通再openclaw db status确认元数据库通再在对话里发简单查询确认 Skill 触发最后看日志定位具体 SQL 错误。这个顺序能帮你快速排除掉大部分干扰项。6. 把 Key 和数据库账号管好长期使用的几个实用习惯配置跑通只是开始长期用下去Key 和账号的管理习惯决定了你后面会不会被安全问题追着跑。第一个习惯模型 Key 和数据库账号分开管。TaoToken 的 Key 管模型调用MySQL 账号管数据访问两者不要混在一个配置文件里。config.yaml里放模型 Key 的引用secrets/database.json里放数据库账号各自独立轮换。这样任何一个泄露影响范围可控。第二个习惯业务库一律只读。前面反复强调这里再强调一次。AI 生成 SQL 的能力很强但它的判断不是 100% 可靠。只读账号是物理层面的保险比任何提示词约束都可靠。如果确实需要写入单独开一个写账号只授权特定的表并且加审计日志。第三个习惯定期轮换 Key。TaoToken 控制台可以随时创建新 Key、禁用旧 Key。建议按季度轮换一次轮换时先创建新 Key、更新配置、验证通过、再禁用旧 Key做到无缝切换。数据库密码同理。第四个习惯用 Coding Plan 控制长期成本。如果你的 OpenClaw 是 7x24 跑 Agent 任务模型调用量会持续累积。按量付费在低频时灵活高频时成本会超出预期。Coding Plan 包月制适合这种场景你可以在控制台看用量趋势到拐点就切。第五个习惯把配置纳入版本管理但排除 secrets。config.yaml可以提交到 Git方便追踪变更。secrets/database.json和任何含 Key 的文件必须进.gitignore。用环境变量或密钥管理服务注入敏感值这是行业标准做法。最后说一个实际经验OpenClaw 连 MySQL 这件事配置本身不复杂复杂的是排障时信息太多、边界不清。把模型通道、元数据库、业务库 Skill 三层分开验证每层都有独立的检查命令问题就变得可定位。我试过在同一个环境里同时改三层配置结果一个报错查了三小时后来学乖了一次只动一层动完立刻验证效率反而高得多。如果你还没开始配建议的顺序是先去 TaoToken 控制台拿 Key用模型对话页面确认模型可用然后按第 2 节配好 OpenClaw 的模型通道用 curl 验证再按第 3 节配元数据库或业务库 Skill最后按第 4 节做端到端验证。每一步都有明确的成功标志不通过就不往下走。这样即使中途卡住你也知道卡在哪一层而不是对着一堆报错发呆。配置文件和命令都在上面了直接复制改改就能用。数据库账号记得用只读Key 记得走环境变量模型通道记得用统一入口。这三件事做到你的 OpenClaw 连 MySQL 就是一条稳定、可审计、可维护的链路。