数据库
Mysql数据库学习!
yum安装mysql数据库
数据库基础知识
数据库条件约束
数据库用户及权限操作-DCL
数据库基础查询操作-DQL
数据库以及表结构操作-DDL
数据库表记录操作-DML
Mysql数据库常用安全加固设置
Redis数据库学习!
Redis数据库安装
SQL server数据库学习
SQL server2019基础安装
Mysql_windows安装
mysql数据库基本概念简介
数据库DQL操作
DDL数据库操作
数据库DML语句
DCL数据控制语句
多表查询
函数
事务
mysql存储引擎
mysql索引
mysql约束
mysql语句优化
本文档使用 MrDoc 发布
-
+
首页
Mysql数据库常用安全加固设置
# Mysql数据库常用安全加固设置 数据库通常包含企业的核心业务数据和敏感信息。如果没有足够的安全措施,数据库可能会受到攻击者的攻击,导致数据泄露、篡改或破坏,从而给企业造成巨大的经济损失和信誉损害,因此要尽可能减少暴露面,增强安全防护,进行加固。 ## 一、系统防护: 1、如不需要关闭访问外网,通过防火墙等进行网络拦截,只允许内网访问。 2、开启防火墙firewalld ```linux # 启动防火墙服务 systemctl start firewalld # 开机启动 systemctl enable firewalld # 查看允许通过的端口 firewall-cmd --zone=public --list-ports # 刷新防火墙状态 firewall-cmd --reload ``` 3、指定监听端口或者修改数据库默认端口 默认配置文件在/etc/my.cnf,在[mysqld] 部分添加端口配置 ```linux [mysqld] port = 3307 ``` 重启mysql-server服务。 ```linux systemctl restart mysqld ``` ## 二、数据库配置防护: 1、使用mysql用户运行mysql,防止程序权限过高 2、数据库用户,拒绝远程登录,删除'用户@%'账号 ```ssh mysql> SELECT User,Host FROM mysql.user; +------------------+-----------+ | User | Host | +------------------+-----------+ | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | | zabbix | localhost | +------------------+-----------+ 5 rows in set (0.00 sec) mysql> ``` 3、开启数据库日志审计 在my.cnf配置中添加`log-error=/var/log/mysqld.log` 4、配置最大连接数 在my.cnf添加设置 ```linux max_connections=<new_value> # 默认151 ``` 5、配置密码复杂度 ```linux # 安装插件 mysql -uroot -p install plugin validate_password soname 'validate_password.so'; # 在my.cnf[mysqld]下添加如下配置 plugin-load = "validate_password.so" validate-password = FORCE_PLUS_PERMANENT # 强制启用该插件,不能被卸载 validate_password_length = 12 # 密码位数,默认为8,按需修改 validate_password_policy = MEDIUM # 密码强度为medium或者1 validate_password_mixed_case_count = 1 # 至少有大小写字母 validate_password_number_count = 1 # 最少一个数字 validate_password_special_char_count = 1 # 最少一个符号 validate_password_check_user_name = OFF # 禁止设置密码和用户名一致 ``` 6、配置登录失败锁定策略 ```linux # 安装插件 mysql -uroot -p install plugin connection_control soname 'connection_control.so'; # 在my.cnf[mysqld]中添加如下配置 plugin-load-add=connection_control.so connection_control=FORCE # 强制启用 connection_control_min_connection_delay=300000 # 最大延迟登录时间,单位毫秒。 connection_control_failed_connections_threshold=5 # 登录失败次数,默认为3 ``` 7、禁用local-infile选项 local-infile选项允许读取本地sql文件,可能增加安全隐患。 ```linux mysql -uroot -p # 查看设置 show variables like 'local_infile'; # 若返回结果不为OFF,则在/etc/my.cnf配置文件中修改 local_infile = 0 ``` 8、禁止符号链接 ```linux # 在my.cnf中添加 skip_symbolic_links=yes ``` my.cnf配置示例: ```linux [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # 数据库日志 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid # 最大连接数设置 max_connections= 100 plugin-load = "validate_password.so" validate-password = FORCE_PLUS_PERMANENT # 强制启用该插件,不能被卸载 validate_password_length = 12 # 密码位数,默认为8,按需修改 validate_password_policy = MEDIUM # 密码强度为medium或者1 validate_password_mixed_case_count = 1 # 至少有大小写字母 validate_password_number_count = 1 # 最少一个数字 validate_password_special_char_count = 1 # 最少一个符号 validate_password_check_user_name = OFF # 禁止设置密码和用户名一致 plugin-load-add=connection_control.so connection_control=FORCE # 强制启用 connection_control_min_connection_delay=300000 # 最大延迟登录时间,单位毫秒。 connection_control_failed_connections_threshold=5 # 登录失败次数,默认为3 local_infile = 0 # 禁止local_infile skip_symbolic_links=yes # 禁止符号连接 ``` ## 数据安全防护: 定期备份,使用定期备份脚本进行数据库备份,配合定时任务执行。 示例: ```linux #!/bin/bash # MySQL 连接信息 USER="root" PASSWORD="password" HOST="localhost" DATABASE="mydatabase" # 备份文件保存路径和名称 BACKUP_DIR="/path/to/backup/dir" BACKUP_FILE="$BACKUP_DIR/mydatabase_$(date +%Y%m%d%H%M%S).sql" # 创建备份文件夹 mkdir -p $BACKUP_DIR # 执行备份 mysqldump -u$USER -p$PASSWORD -h$HOST $DATABASE > $BACKUP_FILE # 输出备份结果 echo "Backup completed: $BACKUP_FILE" ``` 定时任务,这将在每天凌晨 1 点自动执行备份操作。 ```linux 0 1 * * * /path/to/backup/mysql.sh ```
Chuck
2023年11月16日 12:02
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码