H2 database をサーバーとして動作させて別PCから接続する
H2 database をサーバーとして動作させて LAN で別PCから接続したときの手順です。
プロダクション用途ではありません、楽しそうと思っただけです。
ゴールは jdbc 接続できることと h2-console が使用できること。
- サーバー
- OS は
MX Linux 23.3
- IPアドレスは
192.168.0.24
- h2 のバージョンは
2.3.230
- 2024-08-17 時点で
2.3.232
。記録したのは少し前のため。
- 2024-08-17 時点で
- 20年前のPCで 32bit 🧓
- OS は
インストールする
zip ファイルを解凍するだけです。
- h2database.com Downloads から
Platform-Independent Zip
をダウンロードして解凍。- 解凍するとディレクトリー
h2
ができます。その中にディレクトリーbin
があります。
- 解凍するとディレクトリー
ファイアウォールを調整する
事前にファイアウォールのポート 9092/tcp
と 8082/tcp
を allow
します。
9092/tcp
はデータベースへの接続、8082/tcp
はブラウザから h2-console
を使用できるようにするため。いずれもデフォルト、指定可能。
sudo ufw allow 9092/tcp
sudo ufw allow 8082/tcp
h2 サーバーを起動する
java -cp bin/h2-2.3.230.jar org.h2.tools.Server
に続けてオプションをいくつか指定します。-cp
はクラスパスです。
java -cp bin/h2-2.3.230.jar org.h2.tools.Server \
-tcp -web -ifNotExists -tcpAllowOthers -webAllowOthers \
-webExternalNames 192.168.0.24
各オプションの説明はこちら h2database.com Server
下は起動成功時の出力。
TCP server running at tcp://localhost:9092 (others can connect)
Web Console server running at http://localhost:8082 (others can connect)
JDBCで接続する
接続の確認は DBeaver Community でおこないました。
JDBC接続文字列は jdbc:h2:tcp://アドレス:ポート/DBファイルへのパス
です。
ユーザー名とパスワードは初回接続時の値です。
最初のDBへの接続に DBeaver の H2 Server
のデフォルトの接続設定をそのまま使用した場合はユーザー名が sa
になるので注意。
例えば jdbc:h2:tcp://192.168.0.24:9092/~/h2db/hellodb
です。
DBファイルへのパスは h2 database を起動したユーザーのパス ~/h2db/hellodb
です。
接続時にDBファイルが無くても起動時オプション -ifNotExists
によりサーバー側に ~/h2db/hellodb.mv.db
ができます。
# サーバー側にファイルができてる
ls ~/h2db/
hellodb.mv.db
h2-consoleにアクセスする
ブラウザで http://192.168.0.24:8082
にアクセスすると h2-console が表示されます。
項目 | 値 |
---|---|
Driver Class | org.h2.Driver |
JDBC URL | jdbc:h2:tcp://192.168.0.24:9092/~/h2db/hellodb |
User Name | sa |
Password | (無し) |
起動時に -webExternalNames
でサーバー自身のIPアドレスを指定ししないと他のPCからアクセスできません。
[-webExternalNames <names>] The comma-separated list of external names and IP addresses of this server, used together with -webAllowOthers
これを指定せずに他のPCからブラウザで http://192.168.0.24:8082
にアクセスすると Host 192.168.0.24 not found
などのホスト見つからずになります。
h2 サーバーを停止する
Spring Boot アプリケーションで使用したり DBeaver で SQL して、飽きたら停止します。
Ctrl+C
で停止します。
以上
Discussion