Để agent của bạn truy vấn cơ sở dữ liệu,
Chỉ đọc cho tới khi bạn nói khác đi
AgentsRoom quản lý các kết nối MySQL và MariaDB của bạn và cho các agent AI lập trình một cách để chạy truy vấn trên đó. Chỉ đọc theo mặc định, mỗi lần một câu lệnh, và mật khẩu luôn nằm ngoài tầm với.
Một agent đọc được những hàng dữ liệu thật sẽ thôi đoán mò về dữ liệu của bạn. Một agent không ghi được vào đó sẽ thôi là rủi ro mà bạn phải giám sát từng dòng một.
Cách AgentsRoom chạm tới một cơ sở dữ liệu trong mạng con riêng và trả lời một truy vấn chỉ đọc từ agent AI.
Một agent AI lập trình không nhìn thấy dữ liệu của bạn sẽ viết code dựa trên lược đồ mà nó tự tưởng tượng ra. Nó bịa ra một cột, cho rằng một enum có ba giá trị trong khi thực tế có bảy, và giải thích một lỗi bằng một giả thuyết thay vì bằng một hàng dữ liệu. Đưa cho nó một kết nối cơ sở dữ liệu sẽ sửa được chuyện đó, và đó cũng là cách nhanh nhất biến một agent hữu ích thành một sự cố. AgentsRoom được dựng quanh đúng sự căng thẳng ấy.
Bạn lưu các kết nối MySQL và MariaDB trong ứng dụng như vẫn làm với bất kỳ trình khách SQL nào : host, port, user, cơ sở dữ liệu, và TLS khi máy chủ yêu cầu. Nếu cơ sở dữ liệu không chạm tới được từ internet mở, kết nối được định tuyến qua một đường hầm SSH hoặc một phiên chuyển tiếp cổng AWS SSM, dùng chính các kết nối SSH và SSM bạn đã lưu trong AgentsRoom. Đó là cách một cơ sở dữ liệu nằm trong mạng con riêng trở thành thứ bạn truy vấn được mà không phải mở nó ra cho cả thế giới.
Mọi kết nối đều bắt đầu ở chế độ chỉ đọc. Một câu SELECT thì chạy. Một câu lệnh làm thay đổi dữ liệu thì không, cho tới khi bạn đã cho phép ghi trên đúng kết nối đó và xác nhận thao tác. Mỗi lần gọi chỉ nhận một câu lệnh, nên không có gì nấp thêm sau dấu chấm phẩy, và tập kết quả bị giới hạn để một truy vấn rộng không làm ngập một agent hay một cửa sổ. Một kết nối còn có thể được đánh dấu là sản xuất, khiến việc xác nhận khó đưa ra một cách vô ý hơn.
Trình khách SQL mặc định rằng có một agent đang cầm lái
MySQL và MariaDB, chạm tới được trong mạng riêng, với rào chắn bật sẵn.
Kết nối MySQL và MariaDB
Lưu một kết nối cho mỗi cơ sở dữ liệu : host, port, user, cơ sở dữ liệu cần mở và TLS khi máy chủ yêu cầu. Cơ sở dữ liệu cục bộ, bản staging và bản sao sản xuất đều nằm trong cùng một danh sách, sẵn sàng để chọn thay vì gõ lại.
Chạm tới một cơ sở dữ liệu riêng
Một cơ sở dữ liệu trong mạng con riêng không phải trường hợp đặc biệt. Định tuyến kết nối qua một đường hầm SSH hoặc một phiên chuyển tiếp cổng AWS SSM và AgentsRoom mở nó cho bạn, dùng lại các kết nối SSH và SSM bạn đã lưu trong ứng dụng.
Chỉ đọc theo mặc định
Một kết nối mới chỉ đọc được, không làm gì khác. Truy vấn trả về các hàng, còn câu lệnh làm thay đổi dữ liệu thì bị từ chối. Không ai phải nhớ bật chế độ an toàn, vì chế độ an toàn chính là nơi mọi kết nối bắt đầu.
Hai lớp khóa trước một lần ghi
Ghi đòi hai hành động có chủ ý, không phải một. Kết nối phải được cho phép ghi, và bản thân thao tác phải được xác nhận rõ ràng. Một cú nhấp bất cẩn không thể kéo theo một câu UPDATE thiếu mệnh đề WHERE.
Mỗi lần gọi một câu lệnh
Mỗi lần gọi mang đúng một câu lệnh. Bất cứ thứ gì xếp sau dấu chấm phẩy đều bị từ chối chứ không được thực thi, nên một lần đọc trông như một lần đọc không thể lén mang theo câu lệnh thứ hai. Thêm vào đó, tập kết quả còn bị giới hạn.
Sản xuất được đánh dấu rõ
Đánh dấu một kết nối là sản xuất và việc xác nhận trở nên khó hơn. Cơ sở dữ liệu quan trọng thôi trông giống hệt bản sao cục bộ, cả với bạn vào cuối một ngày dài lẫn với một agent đang chạy hết một danh sách việc.
Agent truy vấn cơ sở dữ liệu, chúng không bao giờ cầm mật khẩu
Thông tin đăng nhập cơ sở dữ liệu của bạn do AgentsRoom giữ, chứ không được phát ra ngoài. Một agent xin chạy một truy vấn trên một kết nối mà nó biết theo tên, ứng dụng mở kết nối, chạy câu lệnh và trả về các hàng. Mật khẩu không bao giờ nằm trong thứ agent nhận được, không bao giờ nằm trong truy vấn nó viết, và không bao giờ nằm trong cuộc trò chuyện nó lưu.
Quy tắc chỉ đọc là nửa còn lại, và với một agent thì đó không phải một mặc định mà nó nói vài câu là thoát ra được. Công cụ mà agent dùng để truy vấn từ chối mọi thứ ngoài một lần đọc, bất kể kết nối đó cho phép gì. Cho phép ghi trên một kết nối sẽ mở khóa các thao tác ghi cho bạn, trong bảng điều khiển SQL, nơi mỗi lần ghi đòi một xác nhận rõ ràng, và xác nhận đó cố ý khó đưa ra hơn khi kết nối được đánh dấu là sản xuất. Hậu quả tệ nhất của việc một agent chạy phải một truy vấn dở vẫn là một câu trả lời sai chứ không phải một bảng bị mất.
Quy tắc một câu lệnh khép lại lỗ hổng kinh điển. Một lần gọi mang một câu lệnh thì không thể nối thêm dấu chấm phẩy và một câu thứ hai, nên một truy vấn đọc lên có vẻ vô hại lúc review không thể làm chuyện khác lúc thực thi. Kết hợp với tập kết quả có giới hạn, một sai lầm vẫn chỉ là sai lầm chứ không trở thành một lần xuất dữ liệu.
Hôm nay là MySQL và MariaDB, không có gì khác
Trình khách cơ sở dữ liệu trong AgentsRoom nói giao thức wire của MySQL, và MariaDB tương thích với nó, nên cả hai đều được hỗ trợ ngay lúc này : trực tiếp, hoặc qua một đường hầm SSH hay một phiên chuyển tiếp cổng AWS SSM khi máy chủ không chạm tới được từ internet mở.
PostgreSQL, MongoDB, SQL Server, SQLite và những cái còn lại thì không được hỗ trợ. Bạn xứng đáng biết điều đó trước khi tải chứ không phải sau khi tải. Engine nào tới lượt tiếp theo là do những gì mọi người yêu cầu quyết định, nên nếu thiếu cái của bạn, hãy nói rõ đó là cái nào trên backlog công khai và nó sẽ được tính.
Yêu cầu engine cơ sở dữ liệu của bạnTừ một cơ sở dữ liệu riêng đến một câu trả lời
Lưu kết nối, định tuyến nó, rồi truy vấn hoặc để một agent làm việc đó.
Lưu kết nối
Thêm cơ sở dữ liệu : host, port, user, tên cơ sở dữ liệu, và TLS nếu máy chủ yêu cầu. Đặt cho nó một cái tên mà sau này bạn nhận ra, và đánh dấu là sản xuất nếu đúng là như vậy.
Định tuyến nếu nó nằm trong mạng riêng
Nếu cơ sở dữ liệu không chạm tới được trực tiếp, trỏ kết nối vào một đường hầm SSH hoặc một phiên chuyển tiếp cổng AWS SSM dựng từ các kết nối đã lưu sẵn trong AgentsRoom. Một cơ sở dữ liệu trong mạng con riêng trở nên chạm tới được mà không cần phơi nó ra công khai.
Truy vấn nó, hoặc để một agent truy vấn
Chạy câu lệnh của bạn từ ứng dụng, hoặc để một agent chạy một câu qua MCP. Chỉ đọc cho tới khi bạn đổi, mỗi lần gọi một câu lệnh, tập kết quả có giới hạn, và một xác nhận rõ ràng đứng giữa mọi lần ghi và dữ liệu của bạn.
Khi một agent cần đúng những hàng dữ liệu thật
Những lúc mà đọc dữ liệu sản xuất là con đường ngắn nhất tới bản sửa.
Gỡ lỗi trên dữ liệu thật
Lỗi chỉ xuất hiện với vài tài khoản. Cho agent đọc đúng những hàng đó và nó tìm ra giá trị làm hỏng logic, thay vì đưa ra ba giả thuyết về việc dữ liệu có thể trông như thế nào.
Một cơ sở dữ liệu không công khai
Cơ sở dữ liệu nằm trong mạng con riêng, không có điểm truy cập công khai. Định tuyến kết nối qua một đường hầm SSH hoặc một phiên AWS SSM dựng trên các kết nối đã lưu của bạn, và truy vấn nó mà không mở một cổng nào ra internet.
Để agent kiểm chứng, đừng để nó đoán
Trước khi viết một bản migration hay một truy vấn, agent nhìn được thứ thực sự đang nằm trong cơ sở dữ liệu. Nó đọc, nó báo cáo, và trong lúc đó nó không bao giờ có được khả năng thay đổi bất cứ thứ gì.
Sản xuất, không kèm rủi ro ghi
Đọc dữ liệu sản xuất thường là cần thiết, còn ghi vào đó thì gần như không bao giờ cần giữa một nhiệm vụ. Đánh dấu kết nối là sản xuất, giữ nó ở chế độ chỉ đọc, và khác biệt giữa điều tra và làm hỏng thôi phụ thuộc vào việc có ai đó đang để ý hay không.
Các agent của tôi truy vấn cơ sở dữ liệu bằng cách nào?
Qua AgentsRoom MCP, với bốn công cụ. db_list trả về các kết nối bạn đã lưu cùng siêu dữ liệu của chúng, db_schema đi qua các lược đồ, các bảng và các cột mà không cần một dòng SQL, db_query chạy một câu lệnh và trả về các hàng, còn db_connection_new đề xuất một cơ sở dữ liệu bạn chưa lưu. AgentsRoom mở kết nối, kể cả đường hầm SSH hay phiên AWS SSM đứng phía trước nếu có. Thứ đi ngược về phía agent là một tập kết quả, không bao giờ là một thông tin đăng nhập.
db_query chỉ đọc, bất kể kết nối cho phép gì. Cho phép ghi trên một kết nối sẽ mở khóa các thao tác ghi cho bạn, trong bảng điều khiển SQL, nơi mỗi lần ghi đều được xác nhận rõ ràng và nơi một kết nối được đánh dấu là sản xuất nói to điều đó ra. Nó không mở khóa các thao tác ghi cho một agent : quy tắc chỉ đọc của db_query nằm trong ứng dụng desktop chứ không nằm trong tiến trình MCP, nên nó vẫn giữ nguyên ngay cả khi agent bị dụ đòi thứ khác. Bạn không cần mật khẩu để chạy một câu DROP, và đó là lý do rào chắn đặt ở câu lệnh chứ không chỉ ở thông tin đăng nhập.
Cùng giới hạn đó áp dụng cho việc đăng ký một cơ sở dữ liệu. db_connection_new mở biểu mẫu tạo mới đã điền sẵn host, người dùng và kết nối SSH hay AWS SSM cần dùng để chạm tới nó, rồi bạn xem lại, gõ mật khẩu và lưu. Không có gì được lưu trước khi bạn làm việc đó. Agent nhận được thứ nó cần để suy luận về dữ liệu của bạn, còn những con đường thường biến quyền truy cập đó thành sự cố thì nó không có lấy một con đường nào.
Khám phá AgentsRoom MCPCâu hỏi thường gặp
Những cơ sở dữ liệu nào được hỗ trợ?
MySQL và MariaDB, và chỉ hai cái đó. Trình khách nói giao thức wire của MySQL và MariaDB tương thích với nó, nên cả hai đều chạy được, trực tiếp hoặc qua một đường hầm SSH hay một phiên chuyển tiếp cổng AWS SSM. PostgreSQL, MongoDB, SQL Server, SQLite và phần còn lại hôm nay chưa được hỗ trợ. Nếu bạn cần một trong số đó, hãy yêu cầu trên backlog công khai : danh sách lớn lên theo đúng những gì mọi người thực sự yêu cầu.
Agent AI có ghi được vào cơ sở dữ liệu của tôi không?
Không. Công cụ MCP mà agent dùng để truy vấn, db_query, chỉ đọc bất kể kết nối cho phép gì : SELECT, SHOW, DESCRIBE, EXPLAIN và WITH thì đi qua, còn bất cứ thứ gì làm thay đổi dữ liệu đều bị từ chối. Cho phép ghi trên một kết nối sẽ mở khóa các thao tác ghi cho bạn trong bảng điều khiển SQL, nơi mỗi lần ghi được xác nhận rõ ràng, chứ không mở khóa cho một agent. Rào chắn đặt ở câu lệnh chứ không phải ở mật khẩu, vì chạy một câu DROP không cần tới một mật khẩu.
Làm sao tôi chạm tới một cơ sở dữ liệu trong mạng con riêng?
Định tuyến kết nối qua một đường hầm SSH hoặc một phiên chuyển tiếp cổng AWS SSM, dựng từ các kết nối SSH và SSM bạn đã lưu trong AgentsRoom. Ứng dụng mở đường hầm hay phiên đó rồi nối cơ sở dữ liệu qua nó, nên cơ sở dữ liệu vẫn không chạm tới được từ internet công cộng.
Các agent của tôi có thấy mật khẩu cơ sở dữ liệu không?
Không. Agent truy vấn qua MCP bằng cách gọi tên một kết nối. AgentsRoom giữ thông tin đăng nhập và tự chạy câu lệnh, nên mật khẩu không bao giờ được trả về cho agent, không bao giờ được viết vào truy vấn và không bao giờ là một phần của cuộc trò chuyện.
Một agent có chạy được nhiều câu lệnh cùng lúc không?
Không. Một lần gọi mang đúng một câu lệnh. Bất cứ thứ gì xếp sau dấu chấm phẩy đều bị từ chối chứ không được thực thi, điều đó loại bỏ cách lâu đời nhất để giấu một lần ghi bên trong thứ trông như một lần đọc.
Đánh dấu một kết nối là sản xuất thì thay đổi điều gì?
Nó siết chặt xác nhận cần có trước một lần ghi. Cơ sở dữ liệu quan trọng thôi hành xử như bản sao cục bộ, đó là điều bạn muốn vào cuối một ngày dài và còn muốn hơn nữa ở một agent đang chạy hết một danh sách việc.
Chuyện gì xảy ra với một truy vấn trả về rất nhiều hàng?
Tập kết quả bị giới hạn. Một truy vấn đáng lẽ trả về cả một bảng khổng lồ sẽ quay về ở dạng cắt bớt thay vì làm ngập cửa sổ hay ngữ cảnh của agent, nên một câu SELECT rộng vẫn chỉ là chuyện bất tiện chứ không thành một lần xuất dữ liệu của bạn.
Một agent có thêm được kết nối cơ sở dữ liệu không?
Nó đề xuất được, nhưng không bao giờ lưu được. db_connection_new mở biểu mẫu tạo mới đã điền sẵn host, cổng, người dùng và kết nối SSH hay AWS SSM cần dùng để chạm tới cơ sở dữ liệu, rồi bạn xem lại, gõ mật khẩu và lưu. Không có gì được lưu trước khi bạn làm việc đó, và agent không bao giờ cung cấp một thông tin đăng nhập nào.
Một agent tìm hiểu lược đồ của tôi bằng cách nào?
Bằng db_schema, công cụ khám phá một kết nối đã lưu mà không cần chút SQL nào. Gọi không tham số thì nó liệt kê các lược đồ, gọi kèm một cơ sở dữ liệu thì liệt kê các bảng và view, gọi kèm một bảng thì trả về các cột, kiểu dữ liệu, khả năng nhận NULL, khóa và giá trị mặc định của chúng. Cách này rẻ hơn và an toàn hơn việc bắt một agent tự tay truy vấn information_schema.
Có thể bạn cũng thích
RDS qua AWS SSM
Chạm tới một instance Amazon RDS không có endpoint công khai, ngay từ máy của bạn, thông qua aws ssm start-session và tài liệu AWS-StartPortForwardingSessionToRemoteHost. Không có bastion nào phải bảo trì, không VPN, không quy tắc SSH đi vào. AgentsRoom mở phiên trên một cổng loopback rồi nối trình khách SQL qua đó. Chỉ MySQL và MariaDB, tức là RDS MySQL và các bản Aurora tương thích MySQL.
Kết nối SSH
Lưu các kết nối SSH của bạn, mở terminal tích hợp qua SSH và chạy Claude Code, Codex hoặc Antigravity CLI trực tiếp trên máy chủ từ xa hay VPS của bạn. Xác thực bằng khóa SSH hoặc mật khẩu, hồ sơ kết nối theo từng dự án, không cần ứng dụng SSH riêng.
Trình quản lý bí mật
Lưu khóa API, token và mật khẩu trong keychain của hệ điều hành, tham chiếu chúng bằng {{secret:NAME}} trong lệnh dev và trong môi trường của agent, rồi để AgentsRoom phân giải lúc khởi chạy. Agent chỉ thấy tên, không bao giờ thấy giá trị, và không có gì được đồng bộ lên máy chủ.
Dev Terminals
Trình quản lý terminal và khởi chạy tiến trình theo từng dự án. Khởi động backend, frontend và worker chỉ một cú nhấp, cục bộ hoặc trên một máy chủ từ xa.
AgentsRoom MCP
Server MCP cho phép các agent của bạn lái chính AgentsRoom : dự án, terminal, backlog và kết nối, cùng những rào chắn đi kèm.
Cho agent của bạn dữ liệu, đừng cho khóa
Tải AgentsRoom, lưu các kết nối MySQL và MariaDB của bạn, chạm tới chúng qua một đường hầm SSH hay một phiên AWS SSM, và để các agent truy vấn chúng ở chế độ chỉ đọc.
Ứng dụng đồng hành: theo dõi agent khi đi đường
Sử dụng Claude, Codex, Antigravity CLI hoặc nhà cung cấp AI khác.
Gửi lỗi và yêu cầu thẳng vào backlog công khai của bạn.
Một cái nhìn về AgentsRoom đang hoạt động.