以下是Debian MySQL权限设置的最佳实践:
- 最小权限原则:仅授予用户完成任务所需的最低权限,避免过度授权。
- 权限分离:将不同权限分配给不同角色,通过角色管理用户权限,实现细粒度控制。
- 使用强密码策略:密码需包含大小写字母、数字及特殊字符,长度≥8位,定期更换。
- 限制远程访问:
- 将
bind-address设为127.0.0.1,仅允许本地连接。 - 禁止root用户远程登录。
- 将
- 禁用危险功能:
- 禁用
local-infile,防止直接访问本地文件系统。 - 删除匿名用户和测试数据库。
- 禁用
- 定期审计与维护:
- 定期查看用户权限(
SHOW GRANTS),清理冗余权限。 - 启用日志记录,监控数据库操作。
- 定期查看用户权限(
- 安全配置:
- 使用SSL/TLS加密传输数据。
- 定期更新MySQL至最新版本,修复安全漏洞。
操作示例:
# 创建用户并授权(仅限本地访问特定数据库)
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPass123!';
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
# 禁用远程root登录(需在配置文件中设置)
# 编辑 /etc/mysql/my.cnf,添加:
# [mysqld]
# bind-address = 127.0.0.1
# skip-networking(如需完全禁止远程访问)
参考来源: