1. 首页 > 国产数据库教程 > GreatSQL教程 > 正文

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 用户创建方案

用户创建实施方案:

  1. 分析用户需求
  2. 设计用户类型和权限
  3. 创建用户
  4. 设置密码策略
  5. 验证用户创建结果

3.2 权限分配方案

权限分配实施方案:

  1. 分析用户操作需求
  2. 确定所需权限
  3. 分配权限
  4. 验证权限设置
  5. 定期审查权限

3.3 角色管理方案

角色管理实施方案:

  1. 分析权限需求
  2. 设计角色结构
  3. 创建角色
  4. 为角色分配权限
  5. 将角色授予用户
  6. 定期审查角色权限

Part04-生产案例与实战讲解

4.1 用户创建实战

# 连接GreatSQL
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>

# 创建管理员用户 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%’;

+————-+——+
| 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`@`%` |
+——————————————————————-+

# 撤销权限 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`@`%` |
+——————————————————————-+

学习交流加群风哥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)

# 将角色授予用户 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)

# 查看角色权限 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` |
+————————————————————-+

# 激活角色 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)

# 配置登录失败限制 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)

用户权限管理脚本

# 创建用户管理脚本
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!

权限审计脚本

# 创建权限审计脚本
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!

from greatsql视频:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息