You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行启动H2数据库时禁用PG服务与Web控制台并收紧访问权限

符合需求的H2启动方案

最终启动命令

java -cp h2*.jar org.h2.tools.Server -tcp -tcpPort 9092 -tcpAllowOthers false -web false -pg false -ifExists -baseDir /path/to/your/h2/data/directory

参数说明

  • -tcp:显式指定仅启动TCP模式服务
  • -tcpPort 9092:指定TCP服务监听端口为9092,和你现有配置一致
  • -tcpAllowOthers false:强制TCP服务仅允许本地回环地址访问,拒绝所有外部IP的连接请求,符合你同机部署Java应用的安全需求
  • -web false:直接禁用Web控制台服务,彻底避免Web端口对外开放的安全风险
  • -pg false:直接禁用PostgreSQL兼容服务,关闭你不需要的PG端口
  • -ifExists:禁止客户端连接时自动创建不存在的数据库,避免恶意请求生成垃圾文件占用磁盘
  • -baseDir <自定义数据目录路径>:限制H2只能读写指定目录下的数据库文件,防止路径穿越漏洞读取EC2服务器上的其他系统文件

配套代码调整建议

你现有的JDBC连接代码无需大幅修改,仅建议补充密码配置提升安全性:

  1. 启动命令追加参数-tcpPassword <你自定义的强密码>
  2. 连接代码补充密码配置:
String url = "jdbc:h2:tcp://localhost:9092/" + filePath + ";MODE=MYSQL;AUTO_RECONNECT=TRUE;DB_CLOSE_ON_EXIT=FALSE";

return DataSourceBuilder.create()
    .username("sa")
    .password("你设置的强密码")
    .url(url)
    .driverClassName(org.h2.Driver.class.getName()).build();

启动验证

执行上述启动命令后,正常输出仅会保留TCP服务相关内容,不会出现PG服务和Web控制台的启动日志,且TCP服务会标注only local connections。

内容的提问来源于stack exchange,提问作者J-Deq87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:45:03