2011-10-19 8 views
1

saユーザーのカスタムパスワードを設定しようとしています。私のapplication.confはPlay Framework:メモリ内saユーザのデフォルトパスワードを変更するにはどうすればよいですか?

db=mem 
db.url=jdbc:h2:mem:play;MODE=MYSQL 
db.driver=org.h2.Driver 
db.user=sa 
db.pass=newpass 

が含まれています...プレイフレームワークが、私はこの問題を回避するにはどうすればよいplay.db.DBPlugin

if(p.getProperty("db.url") != null && p.getProperty("db.url").startsWith("jdbc:h2:mem:")) { 
    p.put("db.driver", "org.h2.Driver"); 
    p.put("db.user", "sa"); 
    p.put("db.pass", ""); 
} 

の内側にそれをオーバーライドしているように見えますか?

答えて

2

私が知っている限り、メモリモードのH2はRAMベースのデータベースであり、アプリケーションが停止してユーザーに加えられた変更が失われるため、デフォルトのユーザー/パスワードが使用されるためです。

これを避けるには、H2の "ファイル"( "mem"ではない)インスタンスまたは他のデータベースを使用する必要があります。

私は、メモリデータベースを必要とし、パスワードの変更が関係するシナリオは考えられません。このシナリオについて説明し、パスワードを変更する理由を教えてください。たぶん代替手段を指摘して助けてくれるかもしれません。

+0

私はサーバー上で使用可能なRAMが非常に多いため、メモリ内のデータベースを使用したかったのですが、私が見たベンチマークではメモリ内のH2が私が利用できる選択肢よりも高速です。また、私のアプリケーションのデータベースは、最初のデータロード(またはパッチを当てる)の後に書き込み可能/更新可能である必要はありません。だから、私はアプリケーションの起動時に実行される仕事を持っている、それは私のデータベースを作成します。その後、すべての要求はデータベースの読み取りであり、書き込みではありません。セキュリティ上の理由から、空白/デフォルトのパスワードでデータベースアカウントをアクティブにするのは嫌です。 – DaveS

+1

@DaveS okこれは正直なところ、非常に具体的なシナリオです。フレームワークを編集するには、もう一つの選択肢があるようです。正直言って、メモリ内にある読み取り専用dbであるため、デフォルトのuser/pwdを持つことは、セキュリティ上賢明ではありません。すべてのデータは、システム内のファイル(ジョブがロードするファイル)としても利用できるので、私はそれについて心配しています。 –

+0

答えをありがとう。私はPlayソースコードを編集することになるのではないかと心配しました。私はたぶんデフォルトのままにしておきます。それはとてもうまくいく。 – DaveS

関連する問題