数据库连接

让你的智能体查询数据库,
在你松口之前一直是只读

AgentsRoom 管理你的 MySQL、PostgreSQL 和 MongoDB 连接,并给你的 AI 编程智能体一条对它们执行查询的通道。默认只读,一次一条语句,密码始终够不着。

能读到真实数据行的智能体,不必再对你的数据靠猜。写不了这些数据的智能体,也不必再让你逐行盯着防风险。

数据库客户端
只读
AgentsRoom
SELECT id, email, plan FROM users LIMIT 50
DELETE FROM users WHERE id = 42
已拦截:连接为只读
SSH 隧道bastion.acme.dev
私有子网
有上限的结果集
经由你保存的连接
每次调用一条语句密码绝不离开应用

AgentsRoom 如何访问私有子网里的数据库,并回应 AI 智能体的只读查询。

看不到你数据的 AI 编程智能体,只能照着自己想象的表结构写代码。它会凭空造一个字段,以为某个枚举有三个值而其实有七个,还会用一套理论而不是一行真实数据来解释 bug。给它一个数据库连接就能解决这些,而这同样是把一个得力智能体变成一场事故的最快途径。AgentsRoom 正是围绕这组张力设计的。

你像在任何数据库客户端里那样,把连接保存到应用里:引擎、主机、端口、用户、数据库,服务器需要时再加上 TLS。如果这个数据库从公网访问不到,连接会走 SSH 隧道或 AWS SSM 端口转发会话,用的是你早已保存在 AgentsRoom 里的 SSH 和 SSM 连接。位于私有子网里的数据库就这样变成了你能查询的对象,而不必把它敞开给全世界。

每个连接一开始都是只读的。SELECT 能跑。会修改数据的语句跑不了,除非你先把那个连接改成可写并确认这次操作。每次调用只接受一条语句,所以分号后面藏不下别的东西;结果集也设有上限,一条范围过宽的查询淹不了智能体,也淹不了窗口。连接还可以标记为生产环境,这会让确认没那么容易被误点。

读只是其中一半。在一台机器上保存的连接会出现在你的其他机器上,所以一个数据库只需配置一次,而不是每台电脑配一次。数据库还能导出成文件、从文件还原,或者走同样的隧道直接复制到另一台服务器上:这些正是你过去要离开这个应用才能做的事。

一个默认有智能体在驾驶的数据库客户端

MySQL、PostgreSQL 和 MongoDB,私有网络里也够得着,护栏默认打开。

MySQL、PostgreSQL 和 MongoDB 连接

每个数据库存一份连接:主机、端口、用户、要打开的数据库,以及服务器要求时的 TLS。你的本地数据库、预发布数据库和生产环境只读副本都在同一个列表里,选一下就好,不用重输。

够得着私有数据库

私有子网里的数据库不是什么特例。让连接走 SSH 隧道或 AWS SSM 端口转发会话,AgentsRoom 会替你打开它,复用你早已保存在应用里的 SSH 和 SSM 连接。

默认只读

新建的连接只能读,别的都不行。查询会返回数据行,会改动数据的语句会被拒绝。没人需要记着去打开安全模式,因为每个连接本来就从安全模式开始。

写入之前两道锁

写入需要两次刻意的动作,不是一次。连接必须先被改成可写,操作本身还得明确确认一次。一次不小心的点击,不会顺势连出一条没有 WHERE 子句的 UPDATE。

每次调用一条语句

每次调用只带一条语句。分号后面堆着的任何东西都会被拒绝而不是执行,所以一条看起来像读的查询,没法顺手夹带第二条语句。在这之上,结果集还设有上限。

生产环境会被标记

把一个连接标记为生产环境,确认就会变严。要紧的那个数据库不再和本地副本长得一模一样,无论是对忙了一天的你,还是对正在逐条推进任务清单的智能体。

你的连接,在每台机器上

在办公室机器上保存的连接,笔记本上也在:名称、主机、端口、用户、默认数据库,以及它所经过的隧道。唯一留在原地的是密码,它加密保存在你输入它的那台机器上,所以每台机器只会问你一次。

导出、导入、复制

把一个数据库导出成 .sql 文件,把这样一个文件回灌进某个数据库,或者把一个数据库直接复制到另一个上面。目标库在被覆盖之前会先备份,而彻底替换掉它是另一个需要单独确认的决定。

智能体查询数据库,却从不掌握密码

你的数据库凭据由 AgentsRoom 保管,不会往外发。智能体按名称请求对某个连接执行一条查询,应用打开连接、执行语句、返回数据行。密码从不属于智能体收到的内容,从不出现在它写的查询里,也从不留在它保存的对话中。

只读规则是这件事的另一半,而且对智能体来说,这不是一个它能靠嘴皮子绕过去的默认值。无论那个连接允许什么,智能体用来查询的那个工具只接受读,别的一律拒绝。把连接改成可写,解锁的是你在控制台里的写入:每一次都要一次明确确认,而当连接被标记为生产环境时,这次确认会被刻意做得更难给出。一个智能体跑出一条糟糕查询,最坏的结果仍然是一个错误答案,而不是一张丢掉的表。

单语句规则堵住了那个经典的口子。一次只带一条语句的调用,没法用一个分号再接上第二条,所以一条在评审里读起来人畜无害的查询,执行时也做不出别的事。再加上有上限的结果集,一次失误就还是一次失误,不会变成一次数据导出。

引擎支持范围

三个引擎,缺的那些我们也点名

MySQL 和 MariaDB、PostgreSQL,以及 MongoDB。每一个都用自己的驱动,而不是套一层转换,因为它们是真的不一样:PostgreSQL 的会话只绑定一个数据库,MongoDB 接受的是查询而不是 SQL,而每一次导出都交给对应引擎自带的工具。这三者都能直连服务器;当服务器不对公网暴露时,也能走 SSH 隧道或 AWS SSM 端口转发会话。

SQL Server、Oracle、SQLite、Redis 以及其他引擎都不支持。这件事你应该在下载之前就知道,而不是下载之后。下一个支持哪个引擎由大家提的需求决定,所以如果少了你要的那个,在公开待办清单上说一声,它就会被计进去。

申请你要的数据库引擎
导出、导入、复制

不只是读数据库,还能搬动它

把数据库导出成一个文件。把文件导入某个数据库。或者把一个数据库直接复制到另一个上面,走你早已保存的 SSH 隧道或 AWS SSM 会话也一样。每个引擎都用自己的官方工具,以流式写入磁盘,所以几个 GB 的数据库对应的是一根进度条,而不是一次崩溃。

这些工具随数据库提供,不随 AgentsRoom 提供:mysqldump 和 mysql、pg_dump 和 psql、mongodump 和 mongorestore。它们不在这台机器上时,应用会明确说出缺的是哪几个,并让你指出存放它们的文件夹,一个数据库客户端本该如此:从 Dock 或开始菜单启动的应用只看得到一个最小的 PATH,否则就会在明明装了工具的机器上一口咬定它们不存在。

点错一下就要赔上一天的地方是复制,所以它是围着这一点设计的,而不是围着一切顺利的情形。

  • 只读连接会当场拒绝导入,在任何东西被打开之前。
  • 在第一条语句被执行之前,目标库会先导出到你指定的文件里。
  • 确认框会写出连接和数据库的名字,连接被标记为生产环境时说得更重。
  • 删掉目标库再重建是一个单独的选项,在生产环境的连接上,你还得亲手把数据库名字打出来。

从一个私有数据库到一个答案

保存连接,配好路由,然后自己查,或者让智能体去查。

01

保存连接

把数据库加进来:主机、端口、用户、数据库名,服务器需要时加上 TLS。起一个你日后认得出的名字,如果它就是生产环境,就把它标记出来。

02

如果是私有的,就配好路由

如果数据库无法直连,就让连接指向一条 SSH 隧道,或一个用你已保存在 AgentsRoom 里的连接搭起来的 AWS SSM 端口转发会话。私有子网里的数据库就此变得可达,而不必把它对外暴露。

03

自己查,或者让智能体去查

在应用里执行你的语句,或者让智能体经由 MCP 执行一条。在你改动之前一直是只读,每次调用一条语句,结果集有上限,任何写入和你的数据之间都还隔着一次明确确认。

当智能体需要真实数据行时

读一眼生产数据反而是离修复最近的那些时刻。

对着真实数据调试

这个 bug 只在少数几个账户上出现。让智能体去读那几行数据,它就能找出让逻辑崩掉的那个值,而不是抛出三种关于数据可能长什么样的猜想。

一个不对外的数据库

数据库待在私有子网里,没有公网入口。让连接走一条 SSH 隧道,或一个基于你已保存连接搭起来的 AWS SSM 会话,不用对互联网开端口就能查询它。

让智能体去核实,而不是猜

在写迁移或写查询之前,智能体可以先看看实际存的是什么。它读,它汇报,而在此期间它始终没有改动任何东西的能力。

碰生产环境,但没有写入风险

读生产环境常常是必要的,任务进行到一半时写生产环境几乎从来不是。把连接标记为生产环境,让它保持只读,排查和搞砸之间的分界就不再取决于谁有没有走神。

用真实数据刷新预发布环境

这个 bug 只在真实数据行上复现。走你早已保存的隧道,把数据库复制到预发布服务器上,原来那份会先被导出备份。

打开笔记本,一切都在

你的连接跟着账户走:同样的主机、同样的隧道、同样的只读和生产环境标记。每台机器只会问一次密码,因为那正是永远不离开录入它那台机器的部分。

AI 智能体 + SQL

我的智能体怎么查询数据库?

db_listdb_schemadb_querydb_connection_new

经由 AgentsRoom MCP,一共四个工具。db_list 返回你保存的连接及其元数据,db_schema 不用写一行 SQL 就能逐层遍历 schema、表和列,db_query 执行一条语句并返回数据行,db_connection_new 提议一个你还没保存的数据库。AgentsRoom 负责打开连接,包括挡在前面的 SSH 隧道或 AWS SSM 会话(如果有的话)。回到智能体那里的是一个结果集,绝不会是凭据。

无论连接允许什么,db_query 都是只读的。把连接改成可写,解锁的是你在控制台里的写入:每一次都要明确确认,被标记为生产环境的连接还会把这件事说在明处。它不会为智能体解锁:db_query 的只读规则长在桌面应用里,不在 MCP 进程里,所以哪怕智能体被劝着去要别的东西,这条规则依然成立。跑一条 DROP 并不需要密码,护栏因此长在语句上,而不只是长在凭据上。

登记一个数据库同样受这条限制。db_connection_new 打开创建表单,用主机、用户,以及它该经由哪个 SSH 或 AWS SSM 连接抵达预先填好,由你审核、输入密码并保存。在你动手之前什么都不会被存下来。智能体拿到了推理你数据所需的一切,而这种访问通常演变成事故的那些路径,它一条都用不上。

了解 AgentsRoom MCP

常见问题

支持哪些数据库?

MySQL 和 MariaDB、PostgreSQL,以及 MongoDB。每一个都有自己的驱动,也都能直连,或者走 SSH 隧道、AWS SSM 端口转发会话。SQL Server、Oracle、SQLite 以及其余引擎目前都不支持。如果你需要其中某一个,到公开待办清单上提出来:这份名单是跟着大家真实的需求增长的。

AI 智能体能往我的数据库里写吗?

不能。智能体用来查询的那个 MCP 工具 db_query,无论连接允许什么都是只读的:SELECT、SHOW 和 EXPLAIN 能过,MongoDB 的 find 和 aggregate 也能过,任何会改动数据的语句都会被拒绝。把连接改成可写,解锁的是你在控制台里的写入,每一次都要明确确认,而不是为智能体解锁。护栏长在语句上,而不是长在密码上,因为跑一条 DROP 并不需要密码。

我怎么访问私有子网里的数据库?

让连接走 SSH 隧道或 AWS SSM 端口转发会话,用你早已保存在 AgentsRoom 里的 SSH 和 SSM 连接搭起来。应用会打开隧道或会话并让数据库连接从中穿过,所以数据库对公网始终不可达。

我的智能体会看到数据库密码吗?

不会。智能体经由 MCP 指名一个连接来查询。凭据由 AgentsRoom 保管,语句也由它自己执行,所以密码从不返回给智能体,从不写进查询,也从不成为对话的一部分。

智能体能一次执行多条语句吗?

不能。一次调用只带一条语句。分号后面堆着的任何东西都会被拒绝而不是执行,这就去掉了最古老的那种手法:把写操作藏在一个看起来像读的东西里。

把连接标记为生产环境会带来什么变化?

写入前所需的确认会变严。要紧的那个数据库不再表现得像本地副本,这正是你忙了一天时想要的,而面对一个正在逐条推进任务清单的智能体,你只会更想要。

如果一条查询返回很多行会怎样?

结果集设有上限。一条本会返回巨大表格的查询会被截断返回,而不是淹掉窗口或智能体的上下文,所以一条范围过宽的 SELECT 只是有点碍事,不会变成一次数据导出。

智能体能添加一个数据库连接吗?

它能提议,永远不能保存。db_connection_new 打开创建表单,用主机、端口、用户,以及这个数据库该经由哪个 SSH 或 AWS SSM 连接抵达预先填好,由你审核、输入密码并保存。在你动手之前什么都不会被存下来,凭据也从来不由智能体提供。

智能体怎么了解我的数据库结构?

靠 db_schema,它不用任何 SQL 就能浏览一个已保存的连接。不带参数调用时列出所有 schema,给它一个数据库时列出表和视图,给它一张表时返回各个列,以及它们的类型、是否可为空、键和默认值。这比让智能体手写查询去问 information_schema 更省也更安全。

我的数据库连接会在多台机器之间同步吗?

连接会,密码不会。名称、主机、端口、用户、默认数据库、作用域、只读和生产环境标记,以及它所经过的 SSH 或 SSM 隧道,都跟着你的账户走,所以在一台机器上保存的连接会出现在其他机器上,不用重输。密码则加密留在你输入它的那台机器的钥匙串里,从不发送给我们,这也是为什么从另一台机器同步过来的连接会被标注为还在等它的密码,之后才能打开。

我可以把一个数据库导出来,再导入到别处吗?

可以。你能把一个数据库导出成文件,把这样的文件导入某个数据库,或者把一个数据库直接复制到另一个上面,走你早已保存的 SSH 或 SSM 隧道也一样。每个引擎都用自己的官方工具(mysqldump 和 mysql、pg_dump 和 psql、mongodump 和 mongorestore),它们随数据库提供,而不是随 AgentsRoom 提供:如果找不到,应用会请你指出它们所在的文件夹。复制只在同一个引擎的两个连接之间进行,因为一份导出文件只能还原回生成它的那种引擎。只读连接上的导入会被拒绝;在写入任何东西之前,目标库会先被导出到你指定的文件;至于替换目标库,那是一个单独的选项,它的确认里会写出这个数据库的名字。

你可能还喜欢

把数据给智能体,把密钥留给自己

下载 AgentsRoom,保存你的 MySQL、PostgreSQL 和 MongoDB 连接,通过 SSH 隧道或 AWS SSM 会话访问它们,让你的智能体以只读方式查询。

免费下载

配套应用:随时随地监控你的 Agent

使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。

获取扩展程序
Chrome Web Store

把 Bug 和需求直接发送到您的公开待办清单。

AgentsRoom 实际运行一瞥。

多项目管理
多供应商
多代理运行
实时状态
文件差异与提交
移动应用
实时预览
代理团队
浏览器自动化
Backlog 驱动开发
提示词库
技能库
查看所有功能