greatsql教程FG011-GreatSQL用户与权限管理实战
内容简介
本教程详细介绍GreatSQL数据库的用户和权限管理,包括用户创建、权限分配、角色管理、密码策略等内容。风哥教程参考GreatSQL官方文档安全管理指南,帮助读者掌握用户和权限管理的最佳实践。
用户和权限管理是数据库安全的核心,合理的用户权限设置可以防止未授权访问,保护数据安全。本教程将从基础概念入手,逐步深入到实战案例和最佳实践。
目录大纲
Part01-基础概念与理论知识
1.1 用户管理概述
用户管理是GreatSQL安全管理的重要组成部分,主要包括:
- 用户创建与删除
- 密码管理与修改
- 用户信息查询与更新
- 用户锁定与解锁
1.2 权限管理概述
权限管理是控制用户对数据库对象访问的重要手段,GreatSQL支持以下权限类型:
- 全局权限:对所有数据库生效
- 数据库权限:对特定数据库生效
- 表权限:对特定表生效
- 列权限:对特定列生效
- 存储过程权限:对存储过程生效
1.3 角色管理概述
角色是一组权限的集合,GreatSQL支持角色管理,可以:
- 创建和删除角色
- 为角色分配权限
- 将角色授予用户
- 撤销角色权限
Part02-生产环境规划与建议
2.1 用户权限规划
风哥提示:用户权限应遵循最小权限原则,只授予必要的权限。
用户权限规划建议:
- 超级用户:仅用于管理任务,避免日常使用
- 管理员用户:负责数据库管理,如备份、恢复等
- 应用用户:用于应用程序连接,只授予必要权限
- 只读用户:用于报表和查询,只授予读权限
- 监控用户:用于监控系统,只授予监控权限
2.2 密码策略规划
密码策略规划建议:
- 设置密码长度要求(至少8位)
- 要求包含大小写字母、数字和特殊字符
- 设置密码过期时间(如90天)
- 禁止使用历史密码
- 设置密码失败次数限制
2.3 安全审计规划
安全审计规划建议:
- 启用审计日志
- 记录用户登录和权限变更
- 定期检查审计日志
- 设置日志保留期限
- 监控异常登录行为
更多视频教程www.fgedu.net.cn
Part03-生产环境项目实施方案
3.1 用户创建方案
用户创建实施方案:
- 分析用户需求
- 设计用户类型和权限
- 创建用户
- 设置密码策略
- 验证用户创建结果
3.2 权限分配方案
权限分配实施方案:
- 分析用户操作需求
- 确定所需权限
- 分配权限
- 验证权限设置
- 定期审查权限
3.3 角色管理方案
角色管理实施方案:
- 分析权限需求
- 设计角色结构
- 创建角色
- 为角色分配权限
- 将角色授予用户
- 定期审查角色权限
Part04-生产案例与实战讲解
4.1 用户创建实战
# 连接GreatSQL
mysql -u root -pFGedu123456!
mysql -u root -pFGedu123456!
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.32-24 GreatSQL, Release 24, Revision 3736467bc8c
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>
Your MySQL connection id is 12
Server version: 8.0.32-24 GreatSQL, Release 24, Revision 3736467bc8c
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>
# 创建管理员用户 CREATE USER ‘fgedu_admin’@’%’ IDENTIFIED BY ‘Admin@123456’;
Query OK, 0 rows affected (0.01 sec)
# 创建应用用户 CREATE USER ‘fgedu_app’@’%’ IDENTIFIED BY ‘App@123456’;
Query OK, 0 rows affected (0.01 sec)
# 创建只读用户 CREATE USER ‘fgedu_read’@’%’ IDENTIFIED BY ‘Read@123456’;
Query OK, 0 rows affected (0.01 sec)
# 查看用户 SELECT user, host FROM
mysql.user WHERE user LIKE ‘fgedu%’;
mysql.user WHERE user LIKE ‘fgedu%’;
+————-+——+
| user | host |
+————-+——+
| fgedu_admin | % |
| fgedu_app | % |
| fgedu_read | % |
+————-+——+
| user | host |
+————-+——+
| fgedu_admin | % |
| fgedu_app | % |
| fgedu_read | % |
+————-+——+
学习交流加群风哥微信: itpux-com
4.2 权限管理实战
# 授予管理员用户权限 GRANT ALL PRIVILEGES ON *.* TO ‘fgedu_admin’@’%’ WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)
# 授予应用用户权限 GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON fgedudb.* TO ‘fgedu_app’@’%’;
Query OK, 0 rows affected (0.01 sec)
# 授予只读用户权限 GRANT SELECT ON fgedudb.* TO ‘fgedu_read’@’%’;
Query OK, 0 rows affected (0.01 sec)
# 查看用户权限 SHOW GRANTS FOR ‘fgedu_app’@’%’;
+——————————————————————-+
| Grants for fgedu_app@% |
+——————————————————————-+
| GRANT USAGE ON *.* TO `fgedu_app`@`%` |
| GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `fgedudb`.* TO `fgedu_app`@`%` |
+——————————————————————-+
| Grants for fgedu_app@% |
+——————————————————————-+
| GRANT USAGE ON *.* TO `fgedu_app`@`%` |
| GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `fgedudb`.* TO `fgedu_app`@`%` |
+——————————————————————-+
# 撤销权限 REVOKE DELETE ON fgedudb.* FROM ‘fgedu_app’@’%’;
Query OK, 0 rows affected (0.01 sec)
# 验证权限撤销 SHOW GRANTS FOR ‘fgedu_app’@’%’;
+——————————————————————-+
| Grants for fgedu_app@% |
+——————————————————————-+
| GRANT USAGE ON *.* TO `fgedu_app`@`%` |
| GRANT SELECT, INSERT, UPDATE, EXECUTE ON `fgedudb`.* TO `fgedu_app`@`%` |
+——————————————————————-+
| Grants for fgedu_app@% |
+——————————————————————-+
| GRANT USAGE ON *.* TO `fgedu_app`@`%` |
| GRANT SELECT, INSERT, UPDATE, EXECUTE ON `fgedudb`.* TO `fgedu_app`@`%` |
+——————————————————————-+
学习交流加群风哥QQ113257174
4.3 角色管理实战
# 创建角色 CREATE ROLE ‘role_admin’, ‘role_app’, ‘role_read’;
Query OK, 0 rows affected (0.01 sec)
# 为角色分配权限 GRANT ALL PRIVILEGES ON *.* TO ‘role_admin’; GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON fgedudb.* TO ‘role_app’; GRANT SELECT ON fgedudb.* TO ‘role_read’;
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
# 将角色授予用户 GRANT ‘role_admin’ TO ‘fgedu_admin’@’%’; GRANT ‘role_app’ TO ‘fgedu_app’@’%’; GRANT ‘role_read’ TO ‘fgedu_read’@’%’;
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
# 查看角色权限 SHOW GRANTS FOR ‘role_app’;
+————————————————————-+
| Grants for role_app |
+————————————————————-+
| GRANT USAGE ON *.* TO `role_app` |
| GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `fgedudb`.* TO `role_app` |
+————————————————————-+
| Grants for role_app |
+————————————————————-+
| GRANT USAGE ON *.* TO `role_app` |
| GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `fgedudb`.* TO `role_app` |
+————————————————————-+
# 激活角色 SET DEFAULT ROLE ALL TO ‘fgedu_admin’@’%’, ‘fgedu_app’@’%’, ‘fgedu_read’@’%’;
Query OK, 0 rows affected (0.01 sec)
Part05-风哥经验总结与分享
5.1 常见权限问题与解决方案
| 问题 | 解决方案 |
|---|---|
| 用户无法登录 | 检查用户名、密码和主机权限 |
| 权限不足 | 检查用户权限,授予必要权限 |
| 密码过期 | 修改密码,更新过期时间 |
| 用户被锁定 | 解锁用户,检查失败登录次数 |
5.2 权限管理最佳实践
- 遵循最小权限原则
- 使用角色管理权限
- 定期审查用户权限
- 使用强密码策略
- 启用审计日志
- 限制远程登录
- 定期更新密码
更多学习教程公众号风哥教程itpux_com
5.3 安全优化建议
# 配置密码策略 SET GLOBAL validate_password.policy = ‘STRONG’; SET GLOBAL validate_password.length = 12; SET GLOBAL validate_password.mixed_case_count = 2; SET GLOBAL validate_password.number_count = 2; SET GLOBAL validate_password.special_char_count = 2;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
# 配置登录失败限制 SET GLOBAL max_connect_errors = 10; SET GLOBAL disconnect_on_expired_password = ON;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
用户权限管理脚本
# 创建用户管理脚本
cat > /greatsql/scripts/user_manage.sh << 'EOF'
#!/bin/bash # user_manage.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 连接数据库
mysql -u root -pFGedu123456! << 'SQL'
# 创建监控用户 CREATE USER IF NOT EXISTS ‘fgedu_monitor’@’%’ IDENTIFIED BY ‘Monitor@123456’;
# 授予监控权限 GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO ‘fgedu_monitor’@’%’;
# 创建备份用户 CREATE USER IF NOT EXISTS ‘fgedu_backup’@’fgedu.localhost’ IDENTIFIED BY ‘Backup@123456’;
# 授予备份权限 GRANT SELECT, LOCK TABLES, SHOW VIEW, RELOAD, REPLICATION CLIENT ON *.* TO ‘fgedu_backup’@’fgedu.localhost’;
# 查看所有用户 SELECT user, host FROM
mysql.user WHERE user LIKE ‘fgedu%’; SQL echo “User management completed!” EOF
# 设置脚本权限
chmod +x /greatsql/scripts/user_manage.sh
cat > /greatsql/scripts/user_manage.sh << 'EOF'
#!/bin/bash # user_manage.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 连接数据库
mysql -u root -pFGedu123456! << 'SQL'
# 创建监控用户 CREATE USER IF NOT EXISTS ‘fgedu_monitor’@’%’ IDENTIFIED BY ‘Monitor@123456’;
# 授予监控权限 GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO ‘fgedu_monitor’@’%’;
# 创建备份用户 CREATE USER IF NOT EXISTS ‘fgedu_backup’@’fgedu.localhost’ IDENTIFIED BY ‘Backup@123456’;
# 授予备份权限 GRANT SELECT, LOCK TABLES, SHOW VIEW, RELOAD, REPLICATION CLIENT ON *.* TO ‘fgedu_backup’@’fgedu.localhost’;
# 查看所有用户 SELECT user, host FROM
mysql.user WHERE user LIKE ‘fgedu%’; SQL echo “User management completed!” EOF
# 设置脚本权限
chmod +x /greatsql/scripts/user_manage.sh
# 执行用户管理脚本 /greatsql/scripts/user_manage.sh
+—————+———–+
| user | host |
+—————+———–+
| fgedu_admin | % |
| fgedu_app | % |
| fgedu_backup | fgedu.localhost |
| fgedu_monitor | % |
| fgedu_read | % |
+—————+———–+
User management completed!
| user | host |
+—————+———–+
| fgedu_admin | % |
| fgedu_app | % |
| fgedu_backup | fgedu.localhost |
| fgedu_monitor | % |
| fgedu_read | % |
+—————+———–+
User management completed!
权限审计脚本
# 创建权限审计脚本
cat > /greatsql/scripts/priv_audit.sh << 'EOF'
#!/bin/bash # priv_audit.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 连接数据库
mysql -u root -pFGedu123456! << 'SQL'
# 审计用户权限 SELECT user, host, Grant_priv, Super_priv FROM
mysql.user;
# 审计角色权限 SELECT FROM_USER, TO_USER, WITH_ADMIN_OPTION FROM
mysql.role_edges; SQL echo “Privilege audit completed!” EOF
# 设置脚本权限
chmod +x /greatsql/scripts/priv_audit.sh
cat > /greatsql/scripts/priv_audit.sh << 'EOF'
#!/bin/bash # priv_audit.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 连接数据库
mysql -u root -pFGedu123456! << 'SQL'
# 审计用户权限 SELECT user, host, Grant_priv, Super_priv FROM
mysql.user;
# 审计角色权限 SELECT FROM_USER, TO_USER, WITH_ADMIN_OPTION FROM
mysql.role_edges; SQL echo “Privilege audit completed!” EOF
# 设置脚本权限
chmod +x /greatsql/scripts/priv_audit.sh
# 执行权限审计脚本 /greatsql/scripts/priv_audit.sh
+—————+———–+————+————+
| user | host | Grant_priv | Super_priv |
+—————+———–+————+————+
| root | fgedu.localhost | Y | Y |
| fgedu_admin | % | Y | N |
| fgedu_app | % | N | N |
| fgedu_backup | fgedu.localhost | N | N |
| fgedu_monitor | % | N | N |
| fgedu_read | % | N | N |
+—————+———–+————+————+
+———–+————-+——————-+
| FROM_USER | TO_USER | WITH_ADMIN_OPTION |
+———–+————-+——————-+
| role_admin | fgedu_admin | N |
| role_app | fgedu_app | N |
| role_read | fgedu_read | N |
+———–+————-+——————-+
Privilege audit completed!
| user | host | Grant_priv | Super_priv |
+—————+———–+————+————+
| root | fgedu.localhost | Y | Y |
| fgedu_admin | % | Y | N |
| fgedu_app | % | N | N |
| fgedu_backup | fgedu.localhost | N | N |
| fgedu_monitor | % | N | N |
| fgedu_read | % | N | N |
+—————+———–+————+————+
+———–+————-+——————-+
| FROM_USER | TO_USER | WITH_ADMIN_OPTION |
+———–+————-+——————-+
| role_admin | fgedu_admin | N |
| role_app | fgedu_app | N |
| role_read | fgedu_read | N |
+———–+————-+——————-+
Privilege audit completed!
from greatsql视频:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
