开发上怎么提供数据库的安全?

开发过程中,了提升的安全,一般都采用一下方式提示据的安全性:

 1.码级别:

 2.的用户权级别:

码级别:

       如果接采用明文的方式,这样的安全性不是很高,以至于所有的技只要知道配置文件就可以知道登录数帐号和密了,

如:

image.png

的方式:通加密和解密

druid配置加密:

image.png

实践过程:

1.生成加密的密信息:

命令方式:

  入命令 java -cp druid-1.0.27.jar com.alibaba.druid.filter.config.ConfigTools your_password  

  image.png

方式生成:

public class DruidTest {
 
    public static void main(String[] args) throws Exception {
        // 密码明文
        String password = "viemall@123";
 
        System.out.println("密码[ " + password + " ]的加密信息如下:\n");
 
        String[] keyPair = ConfigTools.genKeyPair(512);
        // 私钥
        String privateKey = keyPair[0];
        // 公钥
        String publicKey = keyPair[1];
        // 用私钥加密后的密文
        password = ConfigTools.encrypt(privateKey, password);
 
        System.out.println("privateKey:" + privateKey);
        System.out.println("publicKey:" + publicKey);
        System.out.println("password:" + password);
        String decryptPassword = ConfigTools.decrypt(publicKey, password);
        System.out.println("decryptPassword:" + decryptPassword);
 
    }
 
}

image.png

配置Druid解密:

jdbc.type=mysql
 jdbc.driver=com.mysql.jdbc.Driver
 jdbc.url=jdbc:mysql://localhost:3306/viemall?useUnicode=true&characterEncoding=utf-8
 jdbc.username=root
 jdbc.password=IVpkS/WvZQKLcm4+f7xlLFo5FzxGIj3O1br9TcvLlq2a17mmt0SWe9Qq1hyVKsnbsRdU6FKTItc6vVIF9RRpTw==
 jdbc.publickey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKYBLQ067pCDwEfysD6rAIWZD4C2K7BO09NFYM
 mA+VD4i+28znGk9F3w3uCFp6vYf633rPJpx+hoHU/+9gBIewUCAwEAAQ==

配置Druid解密的主要新增的行配置。

1

<property name="connectionProperties"
value="config.decrypt=true;config.decrypt.key=${jdbc.publickey}"/>

2、<property name="filters" value="config" />   作用:提示Druid据源需要对数码进行解密  


的用户权级别:

除了代的密安全上限制,在用帐号权限上也要分配好相的用户权限,如:查询 只有查询数据的限;

GRANT SELECT ON viemall.* TO reader@"%"  IDENTIFIED BY "123456"
FLUSH PRIVILEGES;

这样行其他命令的提示限不足:

错误: 1142

DELETE command denied to user 'reader'@'127.0.0.1' for table 'viemall_sms_log'

的用命令管理:

1.新建用

  1.1 登MYSQL

  @>mysql -u root -p

  @>密

  1.2 建用

  mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));

  这样建了一:test 密码为:1234 的用

  注意:此的"localhost",是指只能在本地登,不能在另外一台机器上程登。如果想程登"localhost""%",表示在任何一台电脑上都可以登。也可以指定某台机器可以程登

  1.3 然后登一下:

  mysql>exit;

  @>mysql -u test -p

  @>入密

  mysql>登成功

2.

  授格式:grant 限 on .* to 名@登主机 identified by "密"; 

  2.1 登MYSQL(有ROOT限),里以ROOT身

  @>mysql -u root -p

  @>密

  2.2 首先户创建一个数(testDB)

  mysql>create database testDB;

  2.3 授test户拥有testDB的所有限(某个数的所有限):

   mysql>grant all privileges on testDB.* to test@localhost identified by '1234';

   mysql>flush privileges;//刷新系统权限表

  格式:grant 限 on .* to 名@登主机 identified by "密"; 

  2.4 如果想指定部分一用,可以这样来写:

  mysql>grant select,update on testDB.* to test@localhost identified by '1234';

  mysql>flush privileges; //刷新系统权限表

  2.5 授test户拥有所有的某些限:   

  mysql>grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";

     //test户对所有都有select,delete,update,create,drop 限。

  //@"%" 表示所有非本地主机授,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,验证。)

 //localhost:加上一句grant all privileges on testDB.* to test@localhost identified by '1234';即可。

3、除用

   @>mysql -u root -p

  @>密

   mysql>Delete FROM user Where User='test' and Host='localhost';

   mysql>flush privileges;

   mysql>drop database testDB; //除用

账户限:>drop user 用名@'%';

        >drop user 用名@ localhost; 

 

4. 修改指定用

    @>mysql -u root -p

    @>密

    mysql>update mysql.user set password=password('新密') where User="test" and Host="localhost";

    mysql>flush privileges;

 

5. 列出所有

  mysql>show database;

 

6. 换数

  mysql>use '名';

 

7. 列出所有表

  mysql>show tables;

 

8. 据表结构

  mysql>describe 表名;

 

9. 据表

  mysql>drop database 名;

  mysql>drop table 据表名;