1. 程式人生 > >關於druid數據庫密碼加密流程及問題

關於druid數據庫密碼加密流程及問題

reat 如果 命令 -c init 被拒絕 進行 true ora

最近項目中需要在配置中將數據庫密碼加密,就使用了阿裏的druid來實現,將流程和問題和大家分享一下。

項目使用的是Spring加jetty,原先數據庫連接使用的是Apache的DBCP:commons-dbcp2-2.1.1.jar+ojdbc6.jar

配置:<New class="com.alibaba.druid.pool.DruidDataSource">
<Set name="driverClassName">oracle.jdbc.driver.OracleDriver</Set>
<Set name="url">jdbc:derby:memory:spring-test;create=true

</Set>
<Set name="username">test123</Set>
<Set name="password">test123</Set>
<Set name="validationQuery">select 1 from dual</Set>
</New>

改成druid:druid-1.0.13.jar+ojdbc6.jar

配置:(只需將class修改為com.alibaba.druid.pool.DruidDataSource)

  <New class="com.alibaba.druid.pool.DruidDataSource">
<Set name="driverClassName">oracle.jdbc.driver.OracleDriver</Set>(不配也可以,會根據url自動識別)
<Set name="url">jdbc:derby:memory:spring-test;create=true</Set>
<Set name="username">test123</Set>
<Set name="password">OkBVtGCZIhSXT7Fcg==</Set>
<Set name="filters">config</Set>
<Set name="connectionProperties">config.decrypt=true</Set>
<Set name="validationQuery">select 1 from dual</Set>
<Call name="init"/>
</New>

以上配置的解釋:其他的參數配置不詳述,重點解釋數據庫密碼加密

    1.password:使用命令java -cp druid-1.0.13.jar com.alibaba.druid.filter.config.ConfigTools you_password來生成密碼

    每次執行生成的密文是不一樣的

    如果使用的是druid-1.0.31.jar會生成privateKey、passwordKey和publicKey,配置需改成

     <Set name="password">OkBVtGCZIhSXT7Fcg==</Set><!-- 生成的passwordKey -->
<Set name="filters">config</Set>
<Set name="connectionProperties">config.decrypt=true;config.decrypt.key=DSDFGTGETGsd</Set> <!-- 生成的publicKey-->(不改也可以,有默認)

    2.filters:配置監控

    3.connectionProperties:config.decrypt=true提示Druid數據源需要對數據庫密碼進行解密

    4. <Call name="init"/>:必須配置這個方法。

    在https://github.com/alibaba/druid/tree/master下載源碼項目導入工程中,debug源碼之後發現參數都能接收進去,但是不去執行解密的操作,一直報錯用戶名\口令無效,登錄被拒絕,加上這個方法配置之後能走通

其他相關的問題可參考https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

        https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter

配置好之後,報錯package oracle.jdbc.driver is sealed,數據庫的包被加密,一般情況是jar包沖突。

排查了好久終於在一個war包中找到ojdbc7.jar,去除7之後,終於能正常運行了。

關於druid數據庫密碼加密流程及問題