一、基础权限配置步骤
安装并初始化数据库服务
在CentOS上安装MySQL/MariaDB(如sudo yum install -y mysql-server),启动服务并设置开机自启(sudo systemctl start mysqld; sudo systemctl enable mysqld)。运行安全安装脚本(sudo mysql_secure_installation)设置root密码、移除匿名用户、禁止root远程登录等,加固初始安全。
创建专用SQLAdmin用户
避免使用root账户进行日常管理,创建专用SQLAdmin用户(如sqladmin)。推荐限制访问范围(如localhost,仅本地管理),示例命令:CREATE USER 'sqladmin'@'localhost' IDENTIFIED BY 'StrongPassword123!'。
分配最小必要权限
根据职责分配权限,避免过度授权:
GRANT ALL PRIVILEGES ON *.* TO 'sqladmin'@'localhost' WITH GRANT OPTION;GRANT ALL PRIVILEGES ON mydatabase.* TO 'sqladmin'@'localhost' WITH GRANT OPTION;GRANT SELECT, INSERT, UPDATE, DELETE ON mydatabase.mytable TO 'sqladmin'@'localhost';FLUSH PRIVILEGES;使权限立即生效。配置访问控制
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp; sudo firewall-cmd --reload。sudo setsebool -P httpd_can_network_connect_db 1(若通过Web访问)。二、安全加固措施
密码策略强化
设置强密码(包含大小写字母、数字、特殊字符,长度≥12位),定期更换(每90天)。可通过修改/etc/login.defs调整密码复杂度要求(如PASS_MIN_LEN 12、PASS_WARN_AGE 7)。
权限定期审计
定期检查用户权限,移除不必要的权限或用户。使用以下命令查看用户权限:SHOW GRANTS FOR 'sqladmin'@'localhost';,清理未使用的账户(如DROP USER 'unused_user'@'localhost';)。
加密与安全传输
启用SSL/TLS加密数据库连接(修改MySQL配置文件/etc/my.cnf,添加ssl-ca=/path/to/ca.pem等参数),强制SQLAdmin用户使用SSL连接(GRANT ... REQUIRE SSL;)。
日志与监控
开启MySQL审计日志(在/etc/my.cnf中添加log_error=/var/log/mysqld.log、general_log=1、slow_query_log=1),记录用户操作和查询性能。使用auditd服务监控系统级活动(如sudo auditctl -w /var/lib/mysql/ -p wa -k mysql_access),定期分析日志(ausearch -k mysql_access)。
三、最佳实践建议
最小权限原则
始终遵循“按需分配”原则,仅授予SQLAdmin完成工作所需的最小权限。例如,若仅需备份权限,不要授予ALL PRIVILEGES。
限制访问来源
尽量避免使用%(任意主机)作为主机名,优先使用localhost或特定IP地址。若需远程访问,使用VPN或SSH隧道加密连接。
定期更新与补丁
定期更新CentOS系统、数据库软件及SQLAdmin工具,修复已知漏洞(如sudo yum update -y)。
备份与恢复验证
使用mysqldump定期备份数据库(如mysqldump -u sqladmin -p mydatabase > mydatabase_backup.sql),存储备份至异地或云存储。定期测试恢复流程,确保备份有效性。