如何通过命令行启动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连接代码无需大幅修改,仅建议补充密码配置提升安全性:
- 启动命令追加参数
-tcpPassword <你自定义的强密码> - 连接代码补充密码配置:
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
相关产品推荐
相关产品推荐

