これの続き。
saku-jp.hatenablog.com
Webコンソールの設定とツールのページを開くための管理者パスワードは何を入力すればいいの???
いろいろ検索して以下のページにたどり着き、.h2.server.propertiesにパラメータwebAdminPasswordを追加する必要があることが判った。
.h2.server.properties - yuu_nkjm's Scrapbox
scrapbox.io
.h2.server.propertiesが保存されている場所
と思って、.h2.server.propertiesを探しても見つからない。
コマンドプロンプトからコンソール(org.h2.tools.Console)の起動すると、Windowsのユーザーディレクトリ(%UserProfile%)の直下に.h2.server.propertiesが作成されれおり、これを参照してるっぽい。
しかし、サービスから起動した場合、このファイルを参照していないゾ?といろいろ探ってると、以下のパスにあった。
C:\Windows\System32\config\systemprofile\.h2.server.properties
.h2.server.propertiesの保存場所に関する設定を調べてみたけど判らない…
%H2DB_HOME%\service\wrapper.confにあるかな?と パラメータwrapper.app.parameter.*に-baseDirでベースディレクトリのパスを設定してみたけど、h2.server.propertiesの場所は変わらなかった🤔
設定すべきパスワード
そこで、パラメータwebAdminPassword=passwordを追記し、サービスを再起動すると開始時にエラーとなってしまった。
パラメータwebAdminPasswordを削除すると正常に開始される。
はてはて?と調べてみると、公式のチュートリアルに正解が書いてあった。
H2 > Tutorial > Settings of the H2 Console
www.h2database.com
で、org.h2.server.web.WebServer#encodeAdminPassword(String)で得られたハッシュ値を記述しろとな。
encodeAdminPasswordはStaticなメソッドで、それを呼び出して戻り値が取得できればいいだけなので、初めてJShell使ってみた💦
ひとまずパスワードは12文字以上でないとダメらしい。
>jshell | JShellへようこそ -- バージョン20.0.2 | 概要については、次を入力してください: /help intro jshell> /env -class-path %H2DB_HOME%\bin\h2-2.2.220.jar | 新しいオプションの設定と状態の復元。 jshell> org.h2.server.web.WebServer.encodeAdminPassword("password") | 例外java.lang.IllegalArgumentException: Min length: 12 | at WebServer.encodeAdminPassword (WebServer.java:948) | at (#1:1) jshell> org.h2.server.web.WebServer.encodeAdminPassword("password1234") $2 ==> "d540bcaf2cd4a78fa2329984b155ebe422463dd7a2fcf862be4f66be7601a06cbcb67c53c9c0077c102b529531a0af48603d750af6abf11d83441bd1a1a3bbfd" jshell>