《MySQL 超级用户(root)权限控制:Ubuntu 系统安全配置》
·
MySQL 超级用户(root)权限控制:Ubuntu 系统安全配置
为保障MySQL数据库安全,需严格控制root权限。以下为Ubuntu系统的关键配置步骤:
1. 初始安全设置
sudo mysql_secure_installation
- 交互式向导设置root密码
- 移除匿名用户
- 禁止远程root登录
- 删除测试数据库
- 重载权限表
2. 禁止root远程访问
编辑MySQL配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]段添加:
skip-networking=0
bind-address=127.0.0.1
3. 创建受限管理员账户
CREATE USER 'admin'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
4. root权限最小化
REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'localhost';
GRANT CREATE, ALTER, DROP, SELECT, INSERT, UPDATE, DELETE
ON 指定数据库.* TO 'root'@'localhost';
5. 启用审计日志
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
添加配置:
plugin-load=audit_log.so
audit_log_format=JSON
audit_log_policy=ALL
6. 设置访问频率限制
安装插件:
INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';
INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';
配置阈值(单位:毫秒):
SET GLOBAL connection_control_failed_connections_threshold=3;
SET GLOBAL connection_control_min_connection_delay=1000;
7. 定期权限审计
使用检查脚本:
mysql -u root -p -e "SELECT user,host FROM mysql.user;" > user_audit.log
mysql -u root -p -e "SHOW GRANTS FOR 'root'@'localhost';" > root_grants.log
8. 启用SSL加密
生成证书:
sudo mysql_ssl_rsa_setup --uid=mysql
配置文件添加:
[mysqld]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/server-cert.pem
ssl-key=/var/lib/mysql/server-key.pem
9. 防火墙配置
sudo ufw allow from 可信IP to any port 3306
sudo ufw deny 3306
10. 自动更新策略
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
在/etc/apt/apt.conf.d/50unattended-upgrades中添加:
Unattended-Upgrade::Origins-Pattern {
"o=MySQL";
};
最佳实践
- 每月执行权限审计:
mysql> SHOW GRANTS FOR 'root'@'localhost';- 使用
sudo mysql -u admin -p代替root登录- 敏感操作记录到syslog:
SET GLOBAL log_output = 'TABLE';- 启用二进制日志:
SET GLOBAL binlog_format = 'ROW';
通过以上配置,可显著降低root账户被滥用的风险,同时满足$CIA$三元组(机密性、完整性、可用性)的安全要求。配置后需重启服务:
sudo systemctl restart mysql
更多推荐
所有评论(0)