CloudDM 全量开源:Apache 2.0 协议、零功能阉割,数据库管控工具终于不用再纠结选型了

2026-05-14 14 预计阅读时间:1 分钟
来源:my.oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:11 分钟

数据库研发管控工具的开源生态一直有个尴尬——要么核心功能锁在商业版里,要么社区版只能跑个 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 认证。大致步骤:

  1. 找到后端认证模块(通常是 Spring Security 或类似框架的配置类);
  2. 新增一个 LdapAuthenticationProvider,对接你公司的 LDAP 服务器;
  3. 在 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),你可以扩展驱动模块:

  1. 在后端添加 ClickHouse JDBC 驱动依赖;
  2. 新增连接类型的元数据定义(名称、默认端口、连接参数模板);
  3. 实现查询执行和结果解析的适配逻辑。

改动完成后,前端连接管理界面会自动出现新的数据库类型选项。

协议合规要点

Apache 2.0 要求你在分发修改版本时:

  • 保留原始 LICENSE 文件和版权声明;
  • 如果修改了任何文件,可以在修改文件中添加你自己的变更说明;
  • 不要求你把修改后的代码也开源——你可以闭源分发你的定制版本。

实际操作中最简单的方式:在项目根目录保留原始 LICENSENOTICE 文件不动,你新增或修改的文件头部加一行注释说明变更即可。

评估与落地建议

开源不代表没有边界。在决定把 CloudDM 引入生产之前,建议按以下清单逐项确认:

检查项 说明
数据库连接信息安全 连接串和密码的存储方式——是否加密、是否支持 Vault 等外部密钥管理
权限模型覆盖度 你的团队需要的角色粒度(只读/读写/DDL/导出等)是否都能配置
审计日志完整性 所有 SQL 执行、DDL 变更、数据导出是否都有记录,日志是否可对接外部系统
高可用部署 Server 是否支持多实例部署、是否有会话持久化,避免单点故障
数据脱敏规则 是否支持按字段配置脱敏策略(如手机号只显示前三位)
社区活跃度 Issue 响应速度、Release 频率、Contributor 数量——决定你遇到问题时能否快速获得支持
你的二次开发成本 如果需要定制,评估团队对 Java/Vue(或 CloudDM 实际技术栈)的掌握程度

如果以上核心项都满足你的需求,CloudDM 的全量开源意味着你可以直接用,不用在"社区版够不够用"这个问题上反复纠结。如果某项不满足,Apache 2.0 给了你改代码的权利——成本取决于你团队的工程能力,而不是厂商的授权价格。


全量开源、Apache 2.0、零功能阉割——这三个条件同时满足的数据库管控工具不多。CloudDM 这次开源,对需要多数据库统一管理、权限管控和审计合规的团队来说,提供了一个可以认真试跑的选项。跑起来只需要一条 docker-compose up,试错的成本很低,值得花一个下午验证。


相关推荐