数据库连接

让你的代理查询数据库,
在你松口之前一直是只读

AgentsRoom 管理你的 MySQL、PostgreSQL、SQL Server、MongoDB、SQLite 和 Google BigQuery 连接,并给你的 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、SQL Server、MongoDB、SQLite 和 Google BigQuery,服务器引擎在私有网络里也够得着,护栏默认打开。

MySQL、PostgreSQL、SQL Server 和 MongoDB 连接

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

够得着私有数据库

私有子网里的数据库不是什么特例。让连接走 SSH 隧道或 AWS SSM 端口转发会话,AgentsRoom 会替你打开它,复用你早已保存在应用里的 SSH 和 SSM 连接。Google Cloud SQL 实例通过其连接名称访问,经由 Cloud SQL Auth Proxy,使用你自己的 gcloud 登录,不存储任何内容。

默认只读

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

写入之前两道锁

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

每次调用一条语句

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

生产环境会被标记

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

你的连接,在每台机器上

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

导出、导入、复制

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

代理查询数据库,却从不掌握密码

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

只读规则是这件事的另一半,而且对代理来说,这不是它能靠嘴皮子绕过去的东西。代理用来查询的那个工具只接受读,别的一律拒绝,除非两件事同时成立:连接是可写的,并且你为这个连接打开了“允许智能体写入”。这个选项默认关闭,检查在桌面应用里进行,而不是在代理的进程里。你自己在控制台里的写入仍然需要一次明确确认,而当连接被标记为生产环境时,这次确认会被刻意做得更难给出。一旦某个连接对代理写入开放,这些写入就会跳过这次确认直接执行,所以只为你愿意托付给代理的数据库开启这个选项。在其他所有地方,一条糟糕查询最坏的结果仍然是一个错误答案,而不是一张丢掉的表。

单语句规则堵住了那个经典的口子。一次只带一条语句的调用,没法用一个分号再接上第二条,所以一条在评审里读起来人畜无害的查询,执行时也做不出别的事。SQL Server 不需要那个分号,所以在那里,一次读取就是一条通篇不含任何写入或事务关键字的 SELECT 或 WITH,并且它在一个始终会回滚的事务里运行。再加上有上限的结果集,一次失误就还是一次失误,不会变成一次数据导出。

引擎支持范围

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

MySQL 和 MariaDB、PostgreSQL、SQL Server(包括 Azure SQL 和 Amazon RDS for SQL Server)、MongoDB、SQLite,以及 Google BigQuery。每一个都用自己的驱动,而不是套一层转换,因为它们是真的不一样:PostgreSQL 或 SQL Server 的会话只绑定一个数据库,MongoDB 接受的是查询而不是 SQL,T-SQL 的两条语句之间不需要分号,每一次导出都交给对应引擎自带的工具,SQLite 就是你电脑上的一个文件,没有主机、用户和密码,而一个 BigQuery 连接则是一个 Google Cloud 项目加一个默认数据集,用你自己的 Google 账号登录(gcloud auth application-default login),不存储任何密钥。这四个服务器引擎都能直连;当服务器不对公网暴露时,也能走 SSH 隧道或 AWS SSM 端口转发会话。

Oracle、Redis 以及其他引擎都不支持。在 SQL Server 上,你用 SQL 登录名登录(不提供 Windows、Active Directory 和 Entra ID 身份验证),也没有导出、导入和复制。在 BigQuery 上,Google 按每条查询读取的字节数计费,所以每个连接都有单次查询计费上限(默认 1 GiB,可调整):超过上限的查询会被拒绝,而不是被计费。打开一张表免费且只读,你的代理使用同样的 db_list、db_schema 和 db_query 工具,护栏也一样,还能看到每条查询读取了多少字节;这里同样没有导出、导入和复制。这件事你应该在下载之前就知道,而不是下载之后。下一个支持哪个引擎由大家提的需求决定,所以如果少了你要的那个,在公开待办清单上说一声,它就会被计进去。

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

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

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

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

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

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

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

保存连接,配好路由,然后自己查,或者让代理去查。

01

保存连接

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

02

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

如果数据库无法直连,就让连接指向一条 SSH 隧道,或一个用你已保存在 AgentsRoom 里的连接搭起来的 AWS SSM 端口转发会话。私有子网里的数据库就此变得可达,而不必把它对外暴露。在 Google Cloud 上,请改为选择 Cloud SQL 实例:AgentsRoom 会替你启动 Cloud SQL Auth Proxy。

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_connection_new 保留经过审核的路径:它打开创建表单,用主机、用户,以及它该经由哪个 SSH 或 AWS SSM 连接抵达预先填好,由你审核、输入密码并保存,在你动手之前什么都不会被存下来。除非你关闭“代理可以管理连接”(设置,默认开启),db_connection_save 会把连接直接写入,而密码依然不经过对话:它从密钥库机密复制而来,代理只说出名称。代理拿到了推理你数据所需的一切,而这种访问通常演变成事故的那些路径,它一条都用不上。

代理执行的每条查询同样看得见。db_query 和 db_schema 的调用会出现在右侧面板的“活动”标签页中,附带 SQL 和返回的前几行数据,每个数据库一份日志;代理的头像会显示在“数据库”按钮上,并带着“代理工作中”徽章显示在你的数据库列表中。你也可以在手机上跟进,就在移动应用的代理卡片里。这份日志只在你的电脑和手机之间传输,端到端加密,机密信息会被遮蔽:任何结果集都不会保存在服务器上。

了解 AgentsRoom MCP

就是那个列出你 db_query 和 db_schema 调用的“活动”标签页,这里实拍的是一台已保存的 SSH 服务器:代理执行三条命令,每条都连同输出、退出码和耗时落在列表里,随后这个连接的日志完整展开。日志留在你的电脑上。

在 YouTube 上观看

支持哪些数据库?
MySQL 和 MariaDB、PostgreSQL、SQL Server(包括 Azure SQL 和 Amazon RDS for SQL Server)、MongoDB、SQLite,以及 Google BigQuery。每一个都有自己的驱动。服务器引擎能直连,或者走 SSH 隧道、AWS SSM 端口转发会话;SQLite 连接就是你电脑上的一个文件,按路径选择即可;BigQuery 连接是一个 Google Cloud 项目,用你自己的 Google 账号打开,并带有单次查询计费上限(默认 1 GiB),昂贵的查询会被拒绝,而不是被计费。Oracle、Redis 以及其余引擎目前都不支持。如果你需要其中某一个,到公开待办清单上提出来:这份名单是跟着大家真实的需求增长的。
AI 代理能往我的数据库里写吗?
可以,前提是你明确允许。只有当连接可写,并且你在这个连接的设置里打开了“允许智能体写入”时,代理才能写入。写入随后会立即执行,所以只有在你放心把这个数据库交给代理时才开启它。否则,db_query 仍然是只读的。
我怎么访问私有子网里的数据库?
让连接走 SSH 隧道或 AWS SSM 端口转发会话,用你早已保存在 AgentsRoom 里的 SSH 和 SSM 连接搭起来。应用会打开隧道或会话并让数据库连接从中穿过,所以数据库对公网始终不可达。对于 Google Cloud SQL,选择实例 (project:region:instance) 即可,AgentsRoom 会使用你自己的 gcloud 登录运行 Cloud SQL Auth Proxy;需要时可走私有 IP,使用 IAM 数据库身份验证则完全不需要密码。
我的代理会看到数据库密码吗?
不会。代理经由 MCP 指名一个连接来查询。凭据由 AgentsRoom 保管,语句也由它自己执行,所以密码从不返回给代理,从不写进查询,也从不成为对话的一部分。
代理能一次执行多条语句吗?
不能。一次调用只带一条语句。分号后面堆着的任何东西都会被拒绝而不是执行,这就去掉了最古老的那种手法:把写操作藏在一个看起来像读的东西里。
把连接标记为生产环境会带来什么变化?
写入前所需的确认会变严。要紧的那个数据库不再表现得像本地副本,这正是你忙了一天时想要的,而面对一个正在逐条推进任务清单的代理,你只会更想要。
如果一条查询返回很多行会怎样?
结果集设有上限。一条本会返回巨大表格的查询会被截断返回,而不是淹掉窗口或代理的上下文,所以一条范围过宽的 SELECT 只是有点碍事,不会变成一次数据导出。
代理能添加一个数据库连接吗?
可以,而且默认情况下它甚至可以自行保存。db_connection_save 会把连接直接写入,不经表单,而密码绝不会出现在对话中:代理只说出密钥库中某个机密的名称,由 AgentsRoom 把它复制进钥匙串。如果你更想先审核,请用 db_connection_new:它打开创建表单,用主机、端口、用户,以及这个数据库该经由哪个 SSH 或 AWS SSM 连接抵达预先填好,在你审核、输入密码并保存之前,什么都不会被存下来,凭据也从来不由代理提供。在设置中关闭“代理可以管理连接”,就只剩下经过审核的这条路径。
代理怎么了解我的数据库结构?
靠 db_schema,它不用任何 SQL 就能浏览一个已保存的连接。不带参数调用时列出所有 schema,给它一个数据库时列出表和视图,给它一张表时返回各个列,以及它们的类型、是否可为空、键和默认值。这比让代理手写查询去问 information_schema 更省也更安全。
我的数据库连接会在多台机器之间同步吗?
会。名称、主机、端口、用户、默认数据库、作用域、只读和生产环境标记,以及它所经过的 SSH 或 SSM 隧道,都跟着你的账户走,所以在一台机器上保存的连接会出现在其他机器上,不用重输。默认情况下,密码加密留在你输入它的那台机器的钥匙串里,所以从另一台机器同步过来的连接会向你索要一次密码。在“设置 > 账户”中开启同步密码后,密码也会跟着走,并用只有你的电脑持有的密钥进行端到端加密:AgentsRoom 存储它却无法读取,你在一台机器上修改的密码也会在其他机器上更新。你仍然可以让任意密码只留在一台机器上。
我可以把一个数据库导出来,再导入到别处吗?
可以,限 MySQL、PostgreSQL 和 MongoDB。你能把一个数据库导出成文件,把这样的文件导入某个数据库,或者把一个数据库直接复制到另一个上面,走你早已保存的 SSH 或 SSM 隧道也一样。每个引擎都用自己的官方工具(mysqldump 和 mysql、pg_dump 和 psql、mongodump 和 mongorestore),它们随数据库提供,而不是随 AgentsRoom 提供:如果找不到,应用会请你指出它们所在的文件夹。复制只在同一个引擎的两个连接之间进行,因为一份导出文件只能还原回生成它的那种引擎。只读连接上的导入会被拒绝;在写入任何东西之前,目标库会先被导出到你指定的文件;至于替换目标库,那是一个单独的选项,它的确认里会写出这个数据库的名字。SQLite 没有这些功能:数据库本身就是一个文件,像其他文件一样复制就行。SQL Server 也没有这些功能:没有哪个 Microsoft 工具能像 mysqldump 那样以流的方式导出整个数据库(sqlpackage 写出的是一个 .bacpac 文件,bcp 一次只复制一张表)。
保存我连接信息的账户是如何受保护的?
密码保存在你系统的钥匙串里,而负责把你的连接带到其他电脑上的账户,可以在登录时要求第二重验证。在设置的「账户」中打开「双重身份验证」:之后每次用密码登录,无论在桌面端、手机还是网站上,都需要输入手机上身份验证器应用生成的 6 位验证码;你还会拿到 10 个一次性恢复码,以防手机丢失。仅凭一个被盗的密码,再也打不开这个账户。

截图

应用的真实截图,随此功能的演进不断添加。

  • 数据库引擎选择器列出 MySQL、PostgreSQL、SQL Server、MongoDB、SQLite 和 BigQuery
    使用您自己的 Google 登录连接 Google BigQuery
  • BigQuery 连接表单包含项目 ID、默认数据集和每个查询的计费上限
    限制每个连接的 BigQuery 查询可能产生的费用
  • PostgreSQL 连接表单,勾选了“需要 TLS”和“信任服务器证书”选项
    直接 TLS 连接验证服务器证书,并可选择信任自签名服务器
1 / 3

你可能还喜欢

经由 AWS SSM 访问 RDS

从你自己的机器出发,经由 aws ssm start-session 和 AWS-StartPortForwardingSessionToRemoteHost 文档,访问一个没有公网端点的 Amazon RDS 实例。没有堡垒机要维护,不用 VPN,也不用开放入站 SSH 规则。AgentsRoom 在一个回环端口上打开会话,并让数据库客户端从中穿过。支持 MySQL、PostgreSQL、SQL Server 和 MongoDB,也就是 RDS MySQL、RDS PostgreSQL、RDS for SQL Server、Aurora 以及 DocumentDB。

Cloud SQL Auth Proxy

从你自己的机器出发,访问 Cloud SQL for MySQL 或 PostgreSQL 实例,私有 IP 也不例外,无需堡垒机 VM。AgentsRoom 用你的 gcloud Application Default Credentials(应用默认凭据),在一个回环端口上启动 Cloud SQL Auth Proxy,支持 IAM 数据库身份验证,并让 AI 智能体以只读方式查询它。

SSH 连接

保存你的 SSH 连接,通过 SSH 打开内置终端,直接在远程服务器或 VPS 上运行 Claude Code、Codex 或 Antigravity CLI。支持 SSH 密钥或密码认证,按项目管理连接配置,无需额外的 SSH 客户端。

密钥管理器

把 API 密钥、令牌和密码存进操作系统钥匙串,在开发命令和代理环境里用 {{secret:NAME}} 引用,交给 AgentsRoom 在启动时解析。代理只看得到名称,看不到值,任何内容都不会同步到服务器。

开发终端

按项目管理的终端管理器和进程启动器。一键启动后端、前端和工作进程,本地或远程服务器上都行。

AgentsRoom MCP

让你的代理驾驶 AgentsRoom 本身的 MCP 服务器:项目、终端、任务待办和连接,附带随之而来的护栏。

DevOps 工程师撰稿人前端开发者销售代表后端开发者教练与培训师软件架构师法律顾问QA 工程师财务与行政全栈开发者创意设计师移动开发者研究员安全工程师人事与招聘
项目经理翻译Git 专家数据分析师SEO 专家会计本地化专员公关与传播头脑风暴者运营与物流营销专员客户服务项目助理采购专员社群运营私人助理

把数据给代理,把密钥留给自己

下载 AgentsRoom,保存你的 MySQL、PostgreSQL、SQL Server、MongoDB、SQLite 和 Google BigQuery 连接,通过 SSH 隧道或 AWS SSM 会话访问其中的服务器连接,让你的代理查询它们,只要你不对某个连接开放代理写入,就一直是只读。

下载免费

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

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

获取扩展程序
Chrome Web Store

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

像读聊天记录一样读代理

每个代理都有角色、头像和一条对话线程,读起来就像聊天应用。

对话视图

AgentsRoom 对话视图:AI 编程代理的工作以聊天线程呈现
多项目管理
多供应商
多代理运行
实时状态
文件差异与提交
移动应用
实时预览
代理团队
浏览器自动化
Backlog 驱动开发
提示词库
技能库
查看所有功能