首页主机资讯Ubuntu MySQL数据库如何进行安全加固

Ubuntu MySQL数据库如何进行安全加固

时间2025-10-25 03:00:03发布访客分类主机资讯浏览374
导读:Ubuntu MySQL数据库安全加固指南 1. 安装最新稳定版本的MySQL 首先,通过Ubuntu官方APT仓库安装MySQL服务器,确保获取最新的安全补丁和功能优化: sudo apt update sudo apt install...

Ubuntu MySQL数据库安全加固指南

1. 安装最新稳定版本的MySQL

首先,通过Ubuntu官方APT仓库安装MySQL服务器,确保获取最新的安全补丁和功能优化:

sudo apt update
sudo apt install mysql-server

安装完成后,立即通过mysql_secure_installation脚本完成初始安全配置(包括设置root密码、删除匿名用户、禁止远程root登录、删除测试数据库等)。

2. 运行安全初始化脚本

执行mysql_secure_installation工具,完成以下关键操作:

  • 设置root用户强密码(包含大小写字母、数字、特殊字符,长度≥12位);
  • 删除匿名用户(DELETE FROM mysql.user WHERE User='');
  • 禁止root用户远程登录(UPDATE mysql.user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES; );
  • 删除默认的test数据库(DROP DATABASE IF EXISTS test; );
  • 重新加载权限表(FLUSH PRIVILEGES; )。

3. 强化用户权限管理

  • 创建专用用户:避免使用root账户进行日常操作,创建仅具备必要权限的用户(如newuser),并限制其访问范围(如仅允许本地访问):
    CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
        
    GRANT SELECT, INSERT, UPDATE ON mydatabase.* TO 'newuser'@'localhost';
        
    FLUSH PRIVILEGES;
        
    
  • 遵循最小权限原则:仅授予用户完成工作所需的最小权限(如SELECTINSERT而非ALL PRIVILEGES)。

4. 配置SSL/TLS加密传输

为防止数据在传输过程中被窃取,启用MySQL SSL加密:

  • 安装OpenSSL:sudo apt install openssl
  • 生成证书和密钥:
    openssl genpkey -algorithm RSA -out /etc/mysql/mysql_private.key -aes256
    openssl req -new -key /etc/mysql/mysql_private.key -out /etc/mysql/mysql_csr.csr
    openssl x509 -req -days 365 -in /etc/mysql/mysql_csr.csr -signkey /etc/mysql/mysql_private.key -out /etc/mysql/mysql_certificate.crt
    
  • 修改MySQL配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf),在[mysqld]部分添加:
    ssl-ca = /etc/mysql/mysql_certificate.crt
    ssl-cert = /etc/mysql/mysql_certificate.crt
    ssl-key = /etc/mysql/mysql_private.key
    
  • 重启MySQL服务:sudo systemctl restart mysql

5. 调整防火墙规则

使用ufw(Uncomplicated Firewall)限制对MySQL端口(默认3306)的访问,仅允许信任的IP地址连接:

sudo ufw allow from <
    trusted_ip>
     to any port 3306/tcp
sudo ufw enable

若无需远程访问,可直接禁止3306端口:sudo ufw deny 3306/tcp

6. 禁用危险功能与修改默认端口

  • 禁用本地文件存取:在/etc/mysql/mysql.conf.d/mysqld.cnf[mysqld]部分添加local-infile=0,防止MySQL读取本地文件(如LOAD DATA LOCAL INFILE命令);
  • 修改默认端口:将MySQL默认端口3306更改为非标准端口(如37777),减少被自动化扫描工具发现的风险:
    [mysqld]
    port = 37777
    

修改后重启MySQL服务。

7. 启用日志与监控

  • 开启二进制日志:在/etc/mysql/mysql.conf.d/mysqld.cnf中添加log_bin = /var/log/mysql/mysql-bin.log,记录所有数据库变更操作,便于故障恢复和审计;
  • 记录慢查询日志:添加slow_query_log = 1long_query_time = 2(超过2秒的查询视为慢查询),帮助识别性能瓶颈和潜在攻击;
  • 定期审查日志:使用grepawk等工具分析日志,及时发现异常登录(如频繁的失败登录尝试)或恶意操作。

8. 定期更新与备份

  • 更新MySQL版本:定期运行sudo apt update & & sudo apt upgrade mysql-server,安装最新的安全补丁,修复已知漏洞;
  • 定期备份数据:使用mysqldump工具定期备份数据库(如每日备份),并将备份文件存储在安全的位置(如异地服务器或云存储):
    mysqldump -u root -p mydatabase >
         /backups/mydatabase_$(date +%F).sql
    

9. 其他安全措施

  • 设置强密码策略:通过MySQL全局变量强制要求用户使用复杂密码:
    SET GLOBAL validate_password.policy = MEDIUM;
          -- 密码需包含大小写字母、数字和特殊字符
    SET GLOBAL validate_password.length = 12;
              -- 密码最小长度为12位
    
  • 禁用远程root登录:即使需要远程访问,也应创建专用用户(如remote_user)并授予特定权限,而非直接使用root账户。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu MySQL数据库如何进行安全加固
本文地址: https://pptw.com/jishu/735315.html
如何在Ubuntu上实现MySQL主从同步 Ubuntu MySQL中如何创建索引提高查询效率

游客 回复需填写必要信息