学无先后,达者为师

网站首页 mysql 正文

mysql配置执行日志及防止sql注入

作者:十假杰出青年 更新时间: 2022-07-12 mysql

目录

  • MySQL的几种操作日志
  • 配置方法
    • 步骤一 修改配置文件
    • 步骤二:重启服务
    • 步骤三 开启预编译功能

MySQL的几种操作日志

1、错误日志 log_error (主要是记录启动、运行、停止mysql时出现的致命问题,系统级别的错误记录)
2、查询日志 log (主要记录数据库建立的客户端连接和执行的语句)
3、二进制日志 log_bin (主要是记录所有的更改数据的语句,可使用mysqlbinlog命令恢复数据)
4、慢日志 log_slow_queries (主要是记录所有执行时间超过long_query_time的查询或没有使用索引的查询)
5、更新日志 log_update(官方建议不开启,在此忽略)
在这里插入图片描述

配置方法

步骤一 修改配置文件

在安装mysql的文件位置下打开my.ini文件
在这里插入图片描述
修改文件如下

log-output=FILE
general-log=1
general_log_file=“E:\soft\mysql-5.7.24-winx64\mysql-5.7.24-winx64\mysql.log”
slow-query-log=1
slow_query_log_file=“E:\soft\mysql-5.7.24-winx64\mysql-5.7.24-winx64\mysql_slow.log”
long_query_time=2

注意:配置文件路径记得带“\”,我第一次配置的时候用的"E:\soft\mysql-5.7.24-winx64\mysql-5.7.24-winx64\mysql.log",配置文件就是出不来,结果搜了一下要用“\”
记得按ctrl+s保存
在这里插入图片描述

步骤二:重启服务

打开服务,或者在cmd中输入services .msc
在这里插入图片描述
然后在重启mysql服务

在这里插入图片描述
然后你就会发现原来文件夹下多出了两个新文件mysql.log 和mysql_slow.log
在这里插入图片描述

步骤三 开启预编译功能

然后在url地址中开启预编译功能 useSeverPrepStmts=true
在这里插入图片描述
打开mysql.log文件,我们就可以看到日志
在这里插入图片描述
通过执行日志,我们可以看到预编译,prepareStatement对象把sql注入代码进行转义,防止sql注入
完整代码

package myCode;

import org.junit.jupiter.api.Test; //导入测试类

import java.sql.*;
public class JDBCDemo6_ResultSet {
 @Test  //   prepareStatement执行原理 测试
          //   预编译
   public void PreStaTest() throws Exception{
   // 2 获取连接
   String url="jdbc:mysql:///db2?useSSL=false&useServerPrepStmts=true";
   String username="root";
   String password="1234";
   Connection coon=DriverManager.getConnection(url,username,password);

   //接受用户输入的账号和密码
      String name="dgdgdrgdrg";
      String psd="' or '1'=1'";

   //3 定义sql语句
      String sql="select * from tb3 where name=?and title=?";
   // 4 获取执行sql语句的对象Statement;
      PreparedStatement prestmt = coon.prepareStatement(sql);
   // 5 修改?的值
      prestmt.setString(1,name);
      prestmt.setString(2,psd);

   // 6 执行sql
      ResultSet resultSet = prestmt.executeQuery();


   // 6 判断是否执行成功
      if (resultSet.next()) {
         System.out.println("success''");
      }else {
         System.out.println("false''");
      }
   // 7 释放资源   
      resultSet.close();
      prestmt.close();
      coon.close();

   }
}   

原文链接:https://blog.csdn.net/m0_64288219/article/details/125714881

相关推荐

栏目分类
最近更新