CentOS 系统 sqladmin 权限申请流程
一 流程总览与前置准备
- 明确需求范围:仅管理某个业务库,还是全库管理;是否允许远程连接;是否需要WITH GRANT OPTION(授权他人)。
- 准备信息:目标数据库类型(MySQL/MariaDB 或 PostgreSQL)、服务端口(MySQL 默认 3306、PostgreSQL 默认 5432)、申请人工号/邮箱、有效期、变更原因与回退方案。
- 账号前置:确保有具备管理员权限的数据库账号(如 root 或 postgres)及 sudo 权限的 CentOS 账号,用于执行授权与系统配置。
- 安全基线:准备强密码、限制来源 IP、规划是否启用 SSL/TLS 与审计策略。
二 MySQL MariaDB 申请与实施步骤
- 申请与审批
- 提交工单/邮件,包含:申请项(创建用户/授权范围/来源 IP/是否远程/是否 WITH GRANT OPTION/有效期)、风险与回退方案、申请人及主管审批链。
- 实施(DBA/运维)
- 登录数据库:mysql -u root -p
- 创建用户(示例为本地管理某库;远程将 localhost 改为 % 或指定 IP)
- 仅管理指定库:CREATE USER ‘sqladmin’@‘localhost’ IDENTIFIED BY ‘StrongPass!23’;
- 全库管理:CREATE USER ‘sqladmin’@‘localhost’ IDENTIFIED BY ‘StrongPass!23’;
- 授权
- 仅管理指定库:GRANT ALL PRIVILEGES ON mydb.* TO ‘sqladmin’@‘localhost’;
- 全库管理:GRANT ALL PRIVILEGES ON . TO ‘sqladmin’@‘localhost’ WITH GRANT OPTION;
- 使权限生效:FLUSH PRIVILEGES;
- 远程访问(如需要)
- 开放防火墙:firewall-cmd --permanent --zone=public --add-port=3306/tcp && firewall-cmd --reload
- 如启用 SELinux:setsebool -P httpd_can_network_connect_db 1
- 验证
- 本地:mysql -u sqladmin -p -h 127.0.0.1
- 远程:mysql -u sqladmin -p -h <服务器IP>
- 查看权限:SHOW GRANTS FOR ‘sqladmin’@‘localhost’;
- 回退
- 回收:REVOKE ALL PRIVILEGES ON . FROM ‘sqladmin’@‘localhost’; DROP USER ‘sqladmin’@‘localhost’; FLUSH PRIVILEGES;
- 关闭端口:firewall-cmd --permanent --remove-port=3306/tcp && firewall-cmd --reload。
三 PostgreSQL 申请与实施步骤
- 申请与审批:同 MySQL 前置要求,明确库级/实例级权限、来源 IP、有效期与审批链。
- 实施(DBA/运维)
- 本地切换用户:sudo -u postgres psql
- 创建用户与数据库(示例)
- 创建用户:CREATE USER sqladmin WITH PASSWORD ‘StrongPass!23’;
- 创建库:CREATE DATABASE mydb OWNER sqladmin;
- 授权
- 库级:GRANT ALL PRIVILEGES ON DATABASE mydb TO sqladmin;
- 表级(按需):GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO sqladmin;
- 远程访问(如需要)
- 编辑 pg_hba.conf 增加:host mydb sqladmin <来源IP>/32 md5(或 scram-sha-256)
- 编辑 postgresql.conf:listen_addresses=‘*’(或指定内网地址),port=5432
- 重启或热加载:systemctl reload postgresql 或 SELECT pg_reload_conf();
- 验证
- psql -h <服务器IP> -U sqladmin -d mydb
- 查看权限:\dp
- 回退
- REVOKE ALL PRIVILEGES ON DATABASE mydb FROM sqladmin; DROP USER sqladmin;
- 恢复 pg_hba.conf 与 postgresql.conf 并 reload。
四 安全与合规要求
- 最小权限:优先授予库级/表级权限,避免不必要的 . ALL PRIVILEGES 与 WITH GRANT OPTION;按项目周期设置有效期与定期复核。
- 来源限制:仅放通内网/跳板机网段;变更窗口内临时放通,结束后立即收敛。
- 传输加密:启用 SSL/TLS 连接,禁用明文密码登录;证书与密钥纳入配置管理。
- 密码与密钥:使用强密码并定期更换;密钥登录遵循最小权限与轮换策略。
- 审计与留痕:开启数据库通用查询日志/审计日志(或堡垒机审计),保留至少90天;变更前后导出权限清单对比。
- 防火墙与 SELinux:仅开放必要端口(3306/5432);SELinux 处于 enforcing 时按需放行数据库网络访问。
五 常用命令速查
- MySQL/MariaDB
- 创建用户:CREATE USER ‘sqladmin’@‘localhost’ IDENTIFIED BY ‘StrongPass!23’;
- 授权库级:GRANT ALL PRIVILEGES ON mydb.* TO ‘sqladmin’@‘localhost’;
- 授权全库:GRANT ALL PRIVILEGES ON . TO ‘sqladmin’@‘localhost’ WITH GRANT OPTION;
- 刷新权限:FLUSH PRIVILEGES;
- 查看权限:SHOW GRANTS FOR ‘sqladmin’@‘localhost’;
- 回收与删除:REVOKE ALL PRIVILEGES ON . FROM ‘sqladmin’@‘localhost’; DROP USER ‘sqladmin’@‘localhost’;
- 防火墙:firewall-cmd --permanent --zone=public --add-port=3306/tcp && firewall-cmd --reload
- PostgreSQL
- 创建用户:CREATE USER sqladmin WITH PASSWORD ‘StrongPass!23’;
- 创建库:CREATE DATABASE mydb OWNER sqladmin;
- 授权库级:GRANT ALL PRIVILEGES ON DATABASE mydb TO sqladmin;
- 授权表级:GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO sqladmin;
- 查看权限:\dp
- 重载配置:SELECT pg_reload_conf();