🙊
关于作者
  • 个人简历
  • 联系作者
  • 运维日常记录
    • RAID 磁盘阵列
    • MBR 与 GPT 分区
    • Linux 命令行判断GPT和MBR分区
    • CentoS 7 系统 扩容根分区
  • Linux运维学习笔记
    • 计算机网络基础知识
    • Linux 系统启动过程
    • Linux 命令基本格式
    • Linux 文件删除原理
    • Linux 目录结构说明
    • Linux 查看命令帮助信息
    • Linux Yum 命令
    • Linux Apt 命令
  • Linux 运维管理
    • Linux 硬件管理
    • Linux 软件管理
    • Linux 磁盘管理
    • Linux 系统管理
    • Linux 网络管理
    • Linux 用户和组管理
    • Linux 文件与目录管理
    • Linux 文件压缩与解压缩管理
    • Linux SSL证书自动更新管理
  • 运维环境搭建
    • CentOS 7 安装与优化
    • CentOS 安装高版本Node.js
    • CentOS 升级安装Python2.7.X
    • CentOS 安装 Python3.8.X
    • CentOS 安装 PHP7.4.X
    • CentOS 安装 Mysql 8.0
    • CentOS 安装 Zabbix 5.0
    • Windows Server 部署 IIS
    • Cronsun 任务管理器部署
    • Teltport 堡垒机部署
    • Jump Server 堡垒机搭建及使用
    • CI & CD 持续集成部署
    • ELK6.5.0+Filebeat 日志系统部署
    • Lustre 分布式并行文件系统部署
  • 系统安全加固
    • Linux 操作系统加固
    • Windows 操作系统安全加固
    • Password 安全加固
    • OpenSSL 安全加固
    • NFS 服务安全加固
    • Rsync 服务安全加固
    • IIS 服务安全加固
    • PHP 语言环境安全加固
    • Apache 服务安全加固
    • Nginx 服务安全加固
    • Tomcat 服务安全加固
    • MySQL 服务安全加固
    • PostgreSQL 服务安全加固
    • Redis 服务安全加固
    • MongoDB 服务安全加固
    • 暴力破解攻击和防御
  • 云原生运维教程
    • Docker 理论
    • Docker 基本架构
    • Docker 基本概念
    • Docker 基本使用
      • 容器
      • 镜像
      • 仓库
    • Docker 存储
    • Docker 网络
    • Docker 安装
  • Linux 系统故障排查
    • Linux 系统重置密码方法
    • Linux 系统误操作修改目录权限为 777 修复方法
  • Windows 系统故障排查
    • Windows 和 Windows Server 中启用/禁用 SMBv1、SMBv2 和 SMBv3
    • Windows10建立映射网络驱动器报错,无法挂载共享文件系统,解决办法
  • 运维工具使用
    • 常用 Git 命令简介及使用
    • 常用 SVN 命令简介及使用
    • 常用 Vi / Vim 文本编辑工具简介及使用
    • 国内常用加速源使用及配置
    • 软碟通制作U启动和再生龙恢复Linux系统及备份
    • 常用JetBrains系列IDE快捷键
  • 中间件教程学习
    • Nginx 极简教程
    • Nginx 安装
    • Nginx 配置
    • Nginx 问题集
    • Mysql 教程
    • Mysql 运维
    • Mysql 原理
    • Redis 教程
    • Redis 持久化
    • Redis 复制
    • Redis 哨兵
    • Redis 集群
    • Redis 运维
    • PostgreSQL 教程
    • H2 教程
    • SqLite 教程
    • 数据库中间件 flyway
  • Nginx 入门教程
  • MySQL 入门教程
  • Nosql 数据库
  • 常用工具快捷键
    • Windows10常用快捷键大全
  • Group 1
由 GitBook 提供支持
在本页
  • 一、帐号安全
  • 二、口令
  • 三、授权
  • 四、开启日志审计功能
  • 五、安装最新补丁
  • 六、禁止远程访问
  • 七、访问控制
  • 八、连接数设置

这有帮助吗?

  1. 系统安全加固

MySQL 服务安全加固

上一页Tomcat 服务安全加固下一页PostgreSQL 服务安全加固

最后更新于3年前

这有帮助吗?

博客作者:联系请,搬运不易,希望请作者喝咖啡,可以点击

数据库管理人员可以参考本文档进行 MySQL 数据库系统的安全配置加固,提高数据库的安全性,确保数据库服务稳定、安全、可靠地运行。

一、帐号安全

  • 禁止 Mysql 以管理员帐号权限运行

    以普通帐户安全运行 mysqld,禁止以管理员帐号权限运行 MySQL 服务。在 /etc/my.cnf 配置文件中进行以下设置。

    [mysql.server]
    user=mysql
  • 避免不同用户间共享帐号

    参考以下步骤:

    1. 创建用户。

      mysql> insert into
      mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_sub 
      ject) values("localhost","hezhiqiang",password("passwd"),'','','');

      执行以上命令可以创建一个 hezhiqiang 用户。

    2. 使用该用户登录 MySQL 服务。

      mysql>exit; 
      @>mysql -u hezhiqiang -p 
      @>输入密码 
      mysql>登录成功
  • 删除无关帐号

    DROP USER 语句可用于删除一个或多个 MySQL 账户。使用 DROP USER 命令时,必须确保当前账号拥有 MySQL 数据库的全局 CREATE USER 权限或 DELETE 权限。账户名称的用户和主机部分分别与用户表记录的 User 和 Host 列值相对应。

    执行DROP USER user;语句,您可以取消一个账户和其权限,并删除来自所有授权表的帐户权限记录。

二、口令

检查账户默认密码和弱密码。口令长度需要至少八位,并包括数字、小写字母、大写字母和特殊符号四类中的至少两种类型,且五次以内不得设置相同的口令。密码应至少每 90 天进行一次更换。

您可以通过执行以下命令修改密码。

 mysql> update user set password=password('123qqq...A') where user='root';
 mysql> flush privileges;

三、授权

在数据库权限配置能力范围内,根据用户的业务需要,配置其所需的最小权限。

  1. 查看数据库授权情况。

    mysql> use mysql;
    mysql> select * from user;
    mysql>select * from db;
    mysql>select * from host;
    mysql>select * from tables_priv;
    mysql>select * from columns_priv;
  2. 通过 revoke 命令回收不必要的或危险的授权。

    mysql> help revoke
    Name: 'REVOKE'
    Description:
    Syntax:
    REVOKE
    priv_type [(column_list)]
       [, priv_type [(column_list)]] ...
     ON [object_type]
         {
             *
           | *.*
           | db_name.*
           | db_name.tbl_name
           | tbl_name
           | db_name.routine_name
         }
     FROM user [, user] ...

四、开启日志审计功能

数据库应配置日志功能,便于记录运行状况和操作行为。

MySQL服务有以下几种日志类型:

  • 错误日志: -log-err

  • 查询日志: -log (可选)

  • 慢查询日志: -log-slow-queries (可选)

  • 更新日志: -log-update

  • 二进制日志: -log-bin

    找到 MySQL 的安装目录,在 my.ini 配置文件中增加上述所需的日志类型参数,保存配置文件后,重启 MySQL 服务即可启用日志功能。例如,

    #Enter a name for the binary log. Otherwise a default name will be used. 
    #log-bin= 
    #Enter a name for the query log file. Otherwise a default name will be used. 
    #log= 
    #Enter a name for the error log file. Otherwise a default name will be used. 
    log-error= 
    #Enter a name for the update log file. Otherwise a default name will be used. 
    #log-update=

    该参数中启用错误日志。如果您需要启用其他的日志,只需把对应参数前面的 “#” 删除即可。

    日志查询操作说明

    • 执行show variables like 'log_%';命令可查看所有的 log。

    • 执行show variables like 'log_bin';命令可查看具体的 log。

五、安装最新补丁

确保系统安装了最新的安全补丁。

注意: 在保证业务及网络安全的前提下,并经过兼容性测试后,安装更新补丁。

六、禁止远程访问

禁止网络连接,防止猜解密码攻击、溢出攻击、和嗅探攻击。

注意: 仅限于应用和数据库在同一台主机的情况。

如果数据库不需要远程访问,可以禁止远程 TCP/IP 连接,通过在 MySQL 服务器的启动参数中添加--skip-networking参数使 MySQL 服务不监听任何 TCP/IP 连接,增加安全性。

七、访问控制

通过数据库所在操作系统的防火墙限制,实现只有信任的 IP 才能通过监听器访问数据库。

 mysql> GRANT ALL PRIVILEGES ON db.*
 ·-> -> TO 用户名@'IP子网/掩码';

八、连接数设置

根据您的机器性能和业务需求,设置最大、最小连接数。

在 MySQL 配置文件(my.conf 或 my.ini)的 [mysqld] 配置段中添加max_connections = 1000,保存配置文件,重启 MySQL 服务后即可生效。

您可以使用 或者 进行内外网访问控制,建议不要将数据库高危服务对互联网开放。

点击
联系博客作者
安全组
防火墙