1. 账户与权限安全管理
SELECT、INSERT、UPDATE权限),禁止使用GRANT ALL PRIVILEGES分配全部权限。例如,为报表应用创建只读账户:GRANT SELECT ON mydb.* TO 'report_user'@'192.168.1.%';。DROP(删除表/数据库)、ALTER(修改表结构)、FILE(读写服务器文件)、SUPER(执行KILL、CHANGE MASTER等管理命令)等高危权限,避免恶意操作或误操作破坏数据。%通配符,仅为用户指定具体IP或网段(如'user'@'192.168.1.100'),减少非法IP访问的风险。DROP USER ''@'localhost'; DROP DATABASE test;清除默认匿名账户和测试数据库,防止未授权访问。2. 网络与连接安全加固
/etc/mysql/mysql.conf.d/mysqld.cnf中的port参数并重启服务。bind-address = 127.0.0.1,限制MySQL仅监听本地回环接口,禁止远程直接访问,仅允许本地应用或通过SSH隧道连接。sudo mysql_ssl_rsa_setup),修改配置文件添加ssl-ca、ssl-cert、ssl-key参数,强制用户使用加密连接(GRANT ... REQUIRE SSL;),防止数据传输过程中被窃听。ufw(sudo ufw allow from 192.168.1.100 to any port 3307)或firewalld(sudo firewall-cmd --permanent --add-port=3307/tcp)限制MySQL端口的访问,仅允许受信任IP地址连接。3. 安全配置与审计监控
localhost(UPDATE mysql.user SET Host='localhost' WHERE User='root' AND Host='%'; FLUSH PRIVILEGES;),禁止root用户从远程主机登录,降低管理员账户被攻击的风险。CREATE USER 'admin'@'192.168.1.100' IDENTIFIED BY 'StrongPass123!'),替代root账户执行日常管理操作,避免权限滥用。general_log = ON,general_log_file = /var/log/mysql/general.log)记录所有SQL操作,或使用企业版审计插件(如MySQL Enterprise Audit)实现细粒度审计,便于追溯异常操作。my.cnf中添加sql_safe_updates = 1,防止无WHERE条件的DELETE或UPDATE语句执行(如DELETE FROM users;会被拒绝),减少误操作导致的数据丢失。4. 系统与环境安全维护
apt、yum)及时升级到最新稳定版本,修复已知安全漏洞(如sudo apt update && sudo apt upgrade mysql-server)。TEst@123!]),并定期更换(每90天)。可通过validate_password插件强制密码复杂度(INSTALL PLUGIN validate_password SONAME 'validate_password.so';)。mysqldump(mysqldump -u root -p --all-databases > backup.sql)或Percona XtraBackup工具定期备份数据库,将备份文件加密存储并离线保存(如移动硬盘),确保数据丢失或勒索攻击时能快速恢复。