S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

H2DBでリモートからのJDBC接続

これの続き。
saku-jp.hatenablog.com

リモートからWebコンソールにアクセスできるようになって、JDBC接続もできるようになったんかと思ってたら、そうは問屋が卸してくれない🤔
JDBCドライバから接続してみたら以下のような例外が発生した。

Exception in thread "main" org.h2.jdbc.JdbcSQLNonTransientConnectionException: このサーバへのリモート接続は許されていません, -tcpAllowOthersを参照
Remote connections to this server are not allowed, see -tcpAllowOthers [90117-220]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:690)
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
	at org.h2.message.DbException.get(DbException.java:223)
	at org.h2.message.DbException.get(DbException.java:199)
	at org.h2.message.DbException.get(DbException.java:188)
	at org.h2.server.TcpServerThread.run(TcpServerThread.java:95)
	at java.base/java.lang.Thread.run(Thread.java:1623)

リモートからWebコンソールのアクセス許可[webAllowOthers]

リモートからWebコンソールにアクセスできるにする設定は、webAllowOthersオプションを設定する。
サービス起動なので、C:\Windows\System32\config\systemprofile\.h2.server.propertiesファイルのwebAllowOthersオプションをtrueに設定する。

webAllowOthers=true

Webコンソールの画面では、以下の設定に相当する。
 

もしくはサービス起動なので、%H2DB_HOME%\service\wrapper.confファイルのwrapper.app.parameterパラメータを設定する。

wrapper.app.parameter.n=-webAllowOthers

リモートからJDBC(TCP)接続のアクセス許可[tcpAllowOthers]

リモートからWebコンソールにアクセスできるにする設定は、tcpAllowOthersオプションを設定する。
サービス起動なので、%H2DB_HOME%\service\wrapper.confファイルのwrapper.app.parameterパラメータを設定する。

wrapper.app.parameter.n=-tcpAllowOthers

合わせてbaseDirオプションを設定し、ベースディレクトリ下のデータベースファイルのみアクセスできるようにする。
これも%H2DB_HOME%\service\wrapper.confファイルのwrapper.app.parameterパラメータを設定する。

wrapper.app.parameter.(n+0)=-baseDir
wrapper.app.parameter.(n+1)="ベースとなるディレクトリのパス(c:\hoge\fuga)"