使用mysql8防暴破机制,项目整合mysql8

mysql8新增了很多特性,其中有一个防止暴力破解策略,它可以设置mysql用户在登录时可以尝试输错多少次密码,如果输错次数达到上限那么将会把该用户按照设置的时长进行锁定。大大的增强了mysql的安全性。

升级mysql8所需资源:
数据库:mysql-8.0.21
jar文件:mysql-connector-java-8.0.11.jar

本地安装mysql8(该方法支持多版本并存)

  1. 将mysql8解压放到一个文件夹里,新建my.ini文件
    使用mysql8防暴破机制,项目整合mysql8_第1张图片
  2. 编辑my.ini,输入以下内容
[mysqld]
# 设置3307端口,如果本机没有其他版本mysql,可以将端口设成3306
port=3307
# 设置mysql的安装目录
basedir=G:\\mysql8-winx64\\mysql-8.0.21-winx64 
# 设置mysql数据库的数据的存放目录
#datadir=G:\\mysql8-winx64\\mysql-8.0.21-winx64 \\data 
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3307
default-character-set=utf8
  1. 用管理员权限打开cmd,进入mysql8的bin目录下,输入以下命令,初始化mysql
mysqld --initialize --console

控制台会输出信息,其中会有初始root密码,注意留意将其备份,后面登录root时会用到( root@localhost后面就是初始密码:_ix-LQi:f7M)。

A temporary password is generated for root@localhost: _ix-LQi:f7M
  1. 注册服务,服务名称为mysql8
mysqld install mysql8
  1. 到注册表(cmd敲regedit)里,将mysql8的映射地址改到自己mysql8的bin目录下的mysqld(如果本机无其他版本mysql,忽略本条)
    使用mysql8防暴破机制,项目整合mysql8_第2张图片
    使用mysql8防暴破机制,项目整合mysql8_第3张图片
  2. 启动服务
net start mysql8
  1. 登录root用户,将刚才备份的数据库默认密码输入,即可登录成功
  2. 修改默认密码(密码不能太简单,不然会保错)
 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'abcd@123';
  1. 整体流程截图:
    使用mysql8防暴破机制,项目整合mysql8_第4张图片
    使用mysql8防暴破机制,项目整合mysql8_第5张图片
  2. 新建用户,设置防爆破机制,failed_login_attempts 代表密码可尝试次数,password_lock_time 代表超次数后,锁定几天,语句如下:
create user admin@'localhost' identified by '123456' failed_login_attempts 3 password_lock_time 1;
  1. 测试防爆破机制,成功!
    使用mysql8防暴破机制,项目整合mysql8_第6张图片

将项目中使用的mysql升级

  1. 先将原数据迁移到新的mysql8数据库里
  2. 将mysql-connector-java-8.0.11.jar拷贝到项目的lib文件夹下,将原来的驱动包删除,
  3. 修改项目的数据源url和驱动包名,其他不用动。
url:
jdbc:mysql://localhost:3307/db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
驱动名称:
com.mysql.cj.jdbc.Driver

可能遇到的问题

  1. 在初始化mysql时有的电脑会遇到系统找不到xxx.ddl文件,只需百度一下,网上会有方法,很简单
  2. 如果从别的帖子学的,他的my.ini可能会有datadir=G:\mysql8-winx64\mysql-8.0.21-winx64 \data 这句话,初始化的时候可能会报错,因为系统找不到这个文件,只要把这句用#注掉就好了,它会自己创建data文件夹的。
    完结~

你可能感兴趣的:(工作知识总结,mysql,java)