Ubuntu MySQL数据库如何进行安全加固
导读: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; - 遵循最小权限原则:仅授予用户完成工作所需的最小权限(如
SELECT、INSERT而非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 = 1、long_query_time = 2(超过2秒的查询视为慢查询),帮助识别性能瓶颈和潜在攻击; - 定期审查日志:使用
grep、awk等工具分析日志,及时发现异常登录(如频繁的失败登录尝试)或恶意操作。
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
