数据库研发管控工具的开源生态一直有个尴尬——要么核心功能锁在商业版里,要么社区版只能跑个 demo,上了生产才发现关键能力要付费解锁。CloudDM 团队这次做了一个少见的决定:整个产品以 Apache 2.0 协议开源,所有功能全部开放,没有功能阉割,没有企业版限制。你可以自由部署、修改、二次开发,也可以真正把它用于生产环境中的数据库研发与管控。
这对日常需要管理多种数据库、做权限管控和研发流程规范的团队来说,是一个值得认真评估的选项。
为什么这件事值得关注
数据库管控工具的痛点不是"有没有工具",而是"工具能不能真正用起来"。市面上不少产品采用 Open Core 模式——社区版开放基础查询,但审计日志、权限分级、数据脱敏、多环境隔离这些生产级能力放在付费层。团队评估时投入了学习成本,到了落地阶段才发现关键功能要加钱,要么妥协,要么换工具。
Apache 2.0 协议的区别在于:
- 无功能阉割——你拿到的是完整产品,不是阉割版;
- 无企业版限制——不存在"社区版只能连 5 个数据库"之类的硬上限;
- 可二次开发并商用——Apache 2.0 允许修改、分发、商业使用,只要求保留版权声明和协议文本,不要求衍生作品也必须开源。
这意味着如果你有定制需求——比如对接内部权限系统、增加特定数据库类型的支持、嵌入公司已有平台——你可以直接改代码,不需要等厂商排期。
CloudDM 能做什么
从开源仓库来看,CloudDM 覆盖的是数据库研发与管控的核心链路:
- 多数据库连接管理——支持 MySQL、PostgreSQL、Redis、MongoDB、Elasticsearch 等主流类型,统一入口管理多个环境的连接信息;
- 数据查询与编辑——SQL 编辑器带语法高亮、自动补全、执行历史,支持结果集导出;
- 权限管控——连接级别的权限分配,不同角色看到不同数据库、不同操作范围;
- 审计与安全——操作审计日志、数据脱敏规则,满足合规要求;
- 团队协作——连接配置共享、SQL 脚本版本管理,减少"每个人自己维护一份连接串"的混乱。
这些能力全部在开源版本中可用,没有"高级功能需要 License Key"的门槛。
快速部署:从零跑起来
下面给一个最直接的本地部署方式,用 Docker Compose 一键拉起 CloudDM 及其依赖服务。
1. 克隆仓库并查看目录结构
git clone https://github.com/clouddm/clouddm.git
cd clouddm
ls -la
仓库中通常包含 docker-compose.yml、前端后端源码、配置文件模板。先确认 compose 文件存在:
cat docker-compose.yml
2. 修改配置并启动
根据你的环境修改配置文件中的数据库连接、端口等参数。以下是一个典型的 docker-compose.yml 结构(如果仓库自带,直接用即可;如果没有,可以参考下面的模板自行编写):
version: '3.8'
services:
clouddm-server:
image: clouddm/clouddm-server:latest
# 如果你想从源码构建,改为 build: ./server
ports:
- "8080:8080"
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://clouddm-db:3306/clouddm?useSSL=false&allowPublicKeyRetrieval=true
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=clouddm_pwd
depends_on:
- clouddm-db
clouddm-web:
image: clouddm/clouddm-web:latest
# 或 build: ./web
ports:
- "80:80"
depends_on:
- clouddm-server
clouddm-db:
image: mysql:8.0
environment:
- MYSQL_ROOT_PASSWORD=clouddm_pwd
- MYSQL_DATABASE=clouddm
volumes:
- clouddm-db-data:/var/lib/mysql
volumes:
clouddm-db-data:
启动:
docker-compose up -d
等待服务就绪后,浏览器访问 http://localhost 即可进入 CloudDM 界面。首次登录按提示创建管理员账号。
注意:上面的 YAML 是通用模板,实际端口、镜像名、环境变量请以仓库中的文件为准。启动前先读一遍仓库的 README 和
docker-compose.yml,按说明调整。
3. 添加你的第一个数据库连接
登录后在"连接管理"中添加连接。以 MySQL 为例:
| 字段 | 值 |
|---|---|
| 名称 | dev-mysql |
| 类型 | MySQL |
| 主机 | 10.0.1.50 |
| 端口 | 3306 |
| 用户名 | readonly_user |
| 密码 | (你的密码) |
| 数据库 | app_db |
保存后即可在 SQL 编辑器中对该连接执行查询。
二次开发:改代码满足定制需求
Apache 2.0 协议下,你可以自由修改源码。举几个常见的定制场景和切入点:
场景一:对接公司内部 LDAP 登录
如果 CloudDM 默认只支持本地账号登录,你需要增加 LDAP 认证。大致步骤:
- 找到后端认证模块(通常是 Spring Security 或类似框架的配置类);
- 新增一个
LdapAuthenticationProvider,对接你公司的 LDAP 服务器; - 在 Security 配置中注册该 Provider。
伪代码示意:
// src/main/java/com/clouddm/security/LdapAuthProvider.java
public class LdapAuthProvider implements AuthenticationProvider {
private final LdapTemplate ldapTemplate;
public LdapAuthProvider(LdapTemplate ldapTemplate) {
this.ldapTemplate = ldapTemplate;
}
@Override
public Authentication authenticate(Authentication authentication) {
String username = authentication.getName();
String password = authentication.getCredentials().toString();
// 根据 LDAP 配置验证用户
DirContextOperations ctx = ldapTemplate.authenticate(
LdapQueryBuilder.query().where("uid").is(username),
password
);
// 返回认证结果,映射到 CloudDM 内部用户体系
return new UsernamePasswordAuthenticationToken(
username, password, AuthorityUtils.NO_AUTHORITIES
);
}
@Override
public boolean supports(Class<?> authentication) {
return UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication);
}
}
然后在 Security 配置中注入:
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private LdapTemplate ldapTemplate;
@Override
protected void configure(AuthenticationManagerBuilder auth) {
auth.authenticationProvider(new LdapAuthProvider(ldapTemplate));
}
}
场景二:增加一种新数据库类型的支持
CloudDM 如果还没支持你团队使用的某种数据库(比如 ClickHouse),你可以扩展驱动模块:
- 在后端添加 ClickHouse JDBC 驱动依赖;
- 新增连接类型的元数据定义(名称、默认端口、连接参数模板);
- 实现查询执行和结果解析的适配逻辑。
改动完成后,前端连接管理界面会自动出现新的数据库类型选项。
协议合规要点
Apache 2.0 要求你在分发修改版本时:
- 保留原始
LICENSE文件和版权声明; - 如果修改了任何文件,可以在修改文件中添加你自己的变更说明;
- 不要求你把修改后的代码也开源——你可以闭源分发你的定制版本。
实际操作中最简单的方式:在项目根目录保留原始 LICENSE 和 NOTICE 文件不动,你新增或修改的文件头部加一行注释说明变更即可。
评估与落地建议
开源不代表没有边界。在决定把 CloudDM 引入生产之前,建议按以下清单逐项确认:
| 检查项 | 说明 |
|---|---|
| 数据库连接信息安全 | 连接串和密码的存储方式——是否加密、是否支持 Vault 等外部密钥管理 |
| 权限模型覆盖度 | 你的团队需要的角色粒度(只读/读写/DDL/导出等)是否都能配置 |
| 审计日志完整性 | 所有 SQL 执行、DDL 变更、数据导出是否都有记录,日志是否可对接外部系统 |
| 高可用部署 | Server 是否支持多实例部署、是否有会话持久化,避免单点故障 |
| 数据脱敏规则 | 是否支持按字段配置脱敏策略(如手机号只显示前三位) |
| 社区活跃度 | Issue 响应速度、Release 频率、Contributor 数量——决定你遇到问题时能否快速获得支持 |
| 你的二次开发成本 | 如果需要定制,评估团队对 Java/Vue(或 CloudDM 实际技术栈)的掌握程度 |
如果以上核心项都满足你的需求,CloudDM 的全量开源意味着你可以直接用,不用在"社区版够不够用"这个问题上反复纠结。如果某项不满足,Apache 2.0 给了你改代码的权利——成本取决于你团队的工程能力,而不是厂商的授权价格。
全量开源、Apache 2.0、零功能阉割——这三个条件同时满足的数据库管控工具不多。CloudDM 这次开源,对需要多数据库统一管理、权限管控和审计合规的团队来说,提供了一个可以认真试跑的选项。跑起来只需要一条 docker-compose up,试错的成本很低,值得花一个下午验证。