如何以独立服务器模式运行H2 DB并自定义用户名/密码?
嘿,我之前刚好从嵌入式H2切换到独立TCP模式,给你整理了一套实操步骤,包括修改默认的用户名密码,亲测好用:
启动H2独立TCP服务器
别直接双击bin目录里的h2.bat/h2.sh打开控制台,咱们得用命令行带参数启动TCP服务:
- Windows系统:打开命令提示符,进入H2的bin目录,执行
h2.bat -tcp -tcpPort 9092 -tcpAllowOthers - Linux/Mac系统:打开终端,进入H2的bin目录,执行
./h2.sh -tcp -tcpPort 9092 -tcpAllowOthers
参数说明:
-tcp:明确启动TCP服务器模式-tcpPort 9092:指定服务端口(默认就是9092,也可以改成你需要的端口)-tcpAllowOthers:允许其他客户端/机器连接,要是只本地用可以不加这条,但你要其他客户端连的话必须加上
修改默认用户名和密码
有两种方式可以搞定,看你习惯哪种:
方式1:通过Web控制台可视化修改
启动TCP服务器后,正常打开Web控制台,用原来的sa用户名、空密码登录。登录后在SQL输入框执行以下语句:
- 修改sa的密码:
ALTER USER sa SET PASSWORD '你的新密码'; - 要是想新建一个专属用户(比如admin):
CREATE USER admin WITH PASSWORD 'admin123';
然后给这个用户授权全库权限:GRANT ALL ON DATABASE TO admin;
执行完刷新或者重新登录,就能用新的用户名密码访问了。
方式2:启动服务器时直接指定默认用户
如果不想先登录sa再改,可以在启动命令里直接指定初始用户名和密码,比如:
- Windows:
h2.bat -tcp -tcpPort 9092 -tcpAllowOthers -user admin -password admin123 - Linux/Mac:
./h2.sh -tcp -tcpPort 9092 -tcpAllowOthers -user admin -password admin123
这样启动后,默认的登录用户就是admin,密码是admin123,原来的sa用户可以后续按需删除。
其他客户端连接配置
比如Java客户端的JDBC URL要改成TCP模式的格式:jdbc:h2:tcp://你的服务器IP:9092/数据库文件路径
举个例子:
- 本地连接默认数据库:
jdbc:h2:tcp://localhost:9092/~/test - 指定绝对路径的数据库:
jdbc:h2:tcp://192.168.1.100:9092/D:/h2_data/mydb
然后用户名和密码填你刚设置的新账号就行。
注意事项
- 记得开放服务器的9092端口(防火墙设置),不然其他机器连不上
- 独立服务器模式的数据库文件路径可能和嵌入式模式不一样,最好用绝对路径指定,避免找不到数据文件
- 可以把启动命令做成脚本文件,每次启动直接运行脚本就行,不用每次输一堆参数
内容的提问来源于stack exchange,提问作者Frederick Álvarez
相关产品推荐
相关产品推荐

