Druid使用及开启数据库密码加密

Springboot环境下的配置

1.maven引包

1         <dependency>
2             <groupId>com.alibaba</groupId>
3             <artifactId>druid</artifactId>
4             <version>1.0.26</version>
5         </dependency>    

2.创建配置类

  1 package com.tqh.demo.config;
  2
  3 import com.alibaba.druid.pool.DruidDataSource;
  4 import com.alibaba.druid.support.http.StatViewServlet;
  5 import com.alibaba.druid.support.http.WebStatFilter;
  6 import org.slf4j.Logger;
  7 import org.slf4j.LoggerFactory;
  8 import org.springframework.beans.factory.annotation.Value;
  9 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 10 import org.springframework.boot.web.servlet.ServletRegistrationBean;
 11 import org.springframework.context.annotation.Bean;
 12 import org.springframework.context.annotation.Configuration;
 13
 14 import javax.sql.DataSource;
 15 import java.sql.SQLException;
 16 import java.util.Properties;
 17
 18
 19 /**
 20  * @Author: Mcorleon
 21  * @Date: 18-7-27 14:37
 22  */
 23 @Configuration
 24 public class DruidConfig {
 25
 26         private Logger logger = LoggerFactory.getLogger(DruidConfig.class);
 27
 28         @Value("${spring.datasource.url}")
 29         private String dbUrl;
 30
 31         @Value("${spring.datasource.username}")
 32         private String username;
 33
 34         @Value("${spring.datasource.password}")
 35         private String password;
 36
 37         @Value("${spring.datasource.driver-class-name}")
 38         private String driverClassName;
 39
 40         @Value("${spring.datasource.initialSize}")
 41         private int initialSize;
 42
 43         @Value("${spring.datasource.minIdle}")
 44         private int minIdle;
 45
 46         @Value("${spring.datasource.maxActive}")
 47         private int maxActive;
 48
 49         @Value("${spring.datasource.maxWait}")
 50         private int maxWait;
 51
 52         @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
 53         private int timeBetweenEvictionRunsMillis;
 54
 55         @Value("${spring.datasource.minEvictableIdleTimeMillis}")
 56         private int minEvictableIdleTimeMillis;
 57
 58         @Value("${spring.datasource.validationQuery}")
 59         private String validationQuery;
 60
 61         @Value("${spring.datasource.testWhileIdle}")
 62         private boolean testWhileIdle;
 63
 64         @Value("${spring.datasource.testOnBorrow}")
 65         private boolean testOnBorrow;
 66
 67         @Value("${spring.datasource.testOnReturn}")
 68         private boolean testOnReturn;
 69
 70         @Value("${spring.datasource.filters}")
 71         private String filters;
 72
 73         @Value("${spring.datasource.logSlowSql}")
 74         private String logSlowSql;
 75
 76         @Value("${spring.datasource.publickey}")
 77         private String publickey;
 78
 79         @Bean
 80         public ServletRegistrationBean druidServlet() {
 81             ServletRegistrationBean reg = new ServletRegistrationBean();
 82             reg.setServlet(new StatViewServlet());
 83             reg.addUrlMappings("/druid/*");
 84             //登录druid是否需要密码
 85 //            reg.addInitParameter("loginUsername", username);
 86 //            reg.addInitParameter("loginPassword", password);
 87             reg.addInitParameter("logSlowSql", logSlowSql);
 88             return reg;
 89         }
 90
 91         @Bean
 92         public FilterRegistrationBean filterRegistrationBean() {
 93             FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
 94             filterRegistrationBean.setFilter(new WebStatFilter());
 95             filterRegistrationBean.addUrlPatterns("/*");
 96             filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
 97             filterRegistrationBean.addInitParameter("profileEnable", "true");
 98             return filterRegistrationBean;
 99         }
100
101         @Bean
102         public DataSource druidDataSource() {
103             DruidDataSource datasource = new DruidDataSource();
104             //数据库密码加密配置
105             Properties connectionProperties=new Properties();
106             connectionProperties.setProperty("config.decrypt","true");
107             connectionProperties.setProperty("config.decrypt.key",publickey);
108
109             datasource.setUrl(dbUrl);
110             datasource.setUsername(username);
111             datasource.setPassword(password);
112             datasource.setConnectProperties(connectionProperties);
113             datasource.setDriverClassName(driverClassName);
114             datasource.setInitialSize(initialSize);
115             datasource.setMinIdle(minIdle);
116             datasource.setMaxActive(maxActive);
117             datasource.setMaxWait(maxWait);
118             datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
119             datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
120             datasource.setValidationQuery(validationQuery);
121             datasource.setTestWhileIdle(testWhileIdle);
122             datasource.setTestOnBorrow(testOnBorrow);
123             datasource.setTestOnReturn(testOnReturn);
124             try {
125                 datasource.setFilters(filters);
126             } catch (SQLException e) {
127                 logger.error("druid configuration initialization filter", e);
128             }
129             return datasource;
130         }
131
132     }

3.application.yml配置

 1 server:
 2   port: 9090
 3 spring:
 4   datasource:
 5     type: com.alibaba.druid.pool.DruidDataSource
 6     url: jdbc:mysql://localhost:3306/shiro_test?useUnicode=true&characterEncoding=utf8&useSSL=false
 7     username: root
 8     password: HKMN8fFgGT4s23cKLt5WD6/PN0kSWzgF1o5FcCZnjh1fD5+vw4FXDiWWttFQtiq4NJK64DgVXCYechjfsUyJzA==
 9     publickey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ7GBjiihzT3GYDn2JfpqjhPJ8Opo/Nn4n9GVHCv0d2PM8DPrwAtjQ9RmpwpWFWK5ErmMDKF32Hv7JFMEaCzH9MCAwEAAQ==
10     driver-class-name: com.mysql.jdbc.Driver
11     # 下面为连接池的补充设置,应用到上面所有数据源中
12     initialSize: 5
13     minIdle: 5
14     maxActive: 20
15     # 配置获取连接等待超时的时间
16     maxWait: 60000
17     # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
18     timeBetweenEvictionRunsMillis: 60000
19     # 配置一个连接在池中最小生存的时间,单位是毫秒
20     minEvictableIdleTimeMillis: 300000
21     validationQuery: SELECT 1 FROM DUAL
22     testWhileIdle: true
23     testOnBorrow: false
24     testOnReturn: false
25     # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall‘用于防火墙 ‘config‘开启密码加密
26     filters: stat,wall,log4j,config
27     logSlowSql: true
28   mvc:
29     view:
30       prefix: classpath:/templates/
31       suffix: .html
32     static-path-pattern: /static/**
33 mybatis:
34   type-aliases-package: com.tqh.demo.model

其中,publickey用于解密出密码,私钥,公钥,暗文密码都是用 ConfigTools类生成的,生成方法:找到durid jar包的路径并运行:

java -cp   路径/druid.jar   com.alibaba.druid.filter.config.ConfigTools 你的明文密码

最后在浏览器输入http://localhost:9090/druid即可开启监控页面

如果使用了shiro记得在shiro配置类里的过滤链设置不拦截druid :

filterChainDefinitionMap.put("/druid/**", "anon");

原文地址:https://www.cnblogs.com/Mcorleon/p/9381486.html

时间: 2024-10-27 10:54:59

Druid使用及开启数据库密码加密的相关文章

关于druid数据库密码加密流程及问题

最近项目中需要在配置中将数据库密码加密,就使用了阿里的druid来实现,将流程和问题和大家分享一下. 项目使用的是Spring加jetty,原先数据库连接使用的是Apache的DBCP:commons-dbcp2-2.1.1.jar+ojdbc6.jar 配置:<New class="com.alibaba.druid.pool.DruidDataSource">            <Set name="driverClassName">

使用druid 数据池对连接密码加密

1.使用maven导入druid的jar包 <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.18</version> </dependency> 2.

用户登录注册之数据库密码加密

在连接数据时,用户名密码都是明文,最近网上查资料,使用DES对其进行加密:同时用户注册后,密码都没有进行加密,对于数据库里面数据加密,可以使用password函数直接进行加密,也可以自定义加密,比如使用DES加密. 对数据库连接密码加密具体操作如下: 1.定义DES加密类 public class DESUtils {     private static Key key;     private static String KEY_STR = "qbkeytest";// 密钥   

配置cndi数据源以及数据库密码加密

闲来无事觉得以前用过的一些东西过一段时间会忘记,所以开始想着发博文,第一次发博文,如有问题大家请多多指正. 1,首先在application.xml里面配置数据源     <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">      <property name="jndiName">           <val

SpringBoot集成jasypt数据库密码加密

一.为什么要使用jasypt库? 目前springboot单体应用项目中,甚至没有使用外部配置中心的多服务的微服务架构的项目,开发/测试/生产环境中的密码往往是明文配置在yml或properties文件中, 这样就会导致密码泄露的安全隐患,被不法人员利用从而泄露公司数据信息 因此,jasypt库能通过密码加密减少明文密码泄露的风险: 二.什么是jasypt库? 参考:http://www.jasypt.org/index.html    Jasypt是一个Java库,允许开发人员以最小的努力将基

druid 数据库密码加密

cmd命令: 1.切换的druid-0.2.9.jar包所在目录 2.在命令行中执行如下命令:java -cp druid-0.2.9.jar com.alibaba.druid.filter.config.ConfigTools you_password 即输出加密后密码 3.<!-- sql统计功能就不能用 <property name="filters" value="stat" /> --><property name=&quo

Druid数据库密码加密

1.找到druid-version.jar目录 2.cmd执行命令:cd到jar包目录下 3.执行命令:java -cp druid-1.1.17.jar com.alibaba.druid.filter.config.ConfigTools 123456,得到密钥 4.在application.properties中配置: spring.datasource.password=idOgPR4XQBOdVM59bDupheVnkjsL1ZTr6JJ0KC+KlnJh2SFWkYsdq2MuyHd

druid数据库密码加密程序编写

第一步:引入 druid-1.0.1.jar 架包 第二步: 编写程序 package nihao; import com.alibaba.druid.filter.config.ConfigTools; public class er { @SuppressWarnings("static-access") public static void main(String[] args) { try { ConfigTools configTools = new ConfigTools

数据库密码加密公用秘要生成器,数据库密码加密解密入口

public class Encryptor { public static final String HUNDSUN_VERSION="@system 管理平台 @version 2.0.1 @lastModiDate @describe "; protected static final int BLOCK_SIZE = 8; private int[] workingKey = null; private byte[] userkey = null; /** * standard