CentOS中SQLAdmin权限分配策略
安装并启动数据库服务
以MySQL为例,通过sudo yum install -y mysql-server
安装,启动服务并设置开机自启:sudo systemctl start mysqld && sudo systemctl enable mysqld
。
登录root账户
使用root用户登录数据库(需输入root密码):mysql -u root -p
。
创建SQLAdmin用户
建议创建专用SQLAdmin用户(避免使用root),指定访问范围(localhost
表示仅本地访问,%
表示允许远程访问)和密码:
CREATE USER 'sqladmin'@'localhost' IDENTIFIED BY 'StrongPassword123';
CREATE USER 'sqladmin'@'%' IDENTIFIED BY 'StrongPassword123';
。分配具体权限
遵循最小权限原则,根据需求分配权限(避免直接授予ALL PRIVILEGES
):
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
。Enforcing
模式,允许MySQL网络连接:sudo setsebool -P httpd_can_network_connect_db 1
。密码安全管理
-p
选项交互式输入)。权限最小化
仅授予SQLAdmin完成工作所需的最低权限(如仅需管理特定数据库,则不授予*.*
全局权限)。
访问范围限制
localhost
限制仅本地访问;sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept'
)。连接安全
启用SSL加密数据库连接(需配置MySQL SSL证书),防止数据传输被窃取。
活动监控与审计
SET GLOBAL log_error = '/var/log/mysql/error.log';
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2; -- 记录执行时间超过2秒的查询
定期备份
使用mysqldump
工具定期备份数据库(如全量备份每周一次,增量备份每天一次),并将备份文件存储在安全位置(如异地服务器、云存储):
mysqldump -u sqladmin -p --all-databases > /backup/mysql_full_backup_$(date +%F).sql
```。