灌水唠嗑区
每日一题
问答

如何创建用户和授权操作?

发表于2026-06-02 14:13:0427次浏览13个评论

公司新入职了一名数据分析师“小王”,你需要为他创建一个GBase 8c数据库账户并赋予适当的权限。具体要求如下:

  1. 创建用户: 创建一个名为 analyst_wang 的用户,密码设置为 Data_2024#,并且要求该密码在第一次登录时必须失效(即强制用户在首次登录时修改密码)。

  2. 授予连接权限: 允许该用户连接到名为 sales_db 的数据库。

  3. 授予数据操作权限:sales_db 数据库的 public 模式下,有一张名为 orders 的表。请授予 analyst_wang 对该表的 SELECTINSERT 权限。

  4. 验证与回收: 假设一段时间后,小王离职了,请给出回收其所有权限并删除该用户的命令。

悬赏:1200吉币
回答被发帖人采纳后可获得赏金

评论

登录后才可以发表评论
用户头像
山佳发表于 2个月前
1. 创建用户并设置密码失效
为了强制用户首次登录时修改密码,需要在创建用户时使用 EXPIRED 关键字。
sql-- 创建用户 analyst_wang,密码为 Data_2024#,并强制密码失效
CREATE USER analyst_wang IDENTIFIED BY 'Data_2024#' EXPIRED;

解析:

CREATE USER 用于创建新用户。
IDENTIFIED BY 'Data_2024#' 指定初始密码。
EXPIRED 关键字标记该密码为失效状态。当 analyst_wang 首次使用该密码登录时,系统会提示密码已过期并要求设置新密码。

2. 授予数据库连接权限
默认情况下,新创建的用户没有访问任何数据库的权限。需要从 public(公共用户组)回收默认的连接权限,再单独授予给 analyst_wang。
sql-- 首先,回收 public 对该数据库的连接权限
REVOKE CONNECT ON DATABASE sales_db FROM public;

-- 然后,授予 analyst_wang 连接 sales_db 数据库的权限
GRANT CONNECT ON DATABASE sales_db TO analyst_wang;

解析:

REVOKE CONNECT ON DATABASE sales_db FROM public;:这条命令移除了所有用户(通过public角色)对该数据库的默认连接权限,确保只有被明确授权的用户才能连接。
GRANT CONNECT ON DATABASE sales_db TO analyst_wang;:这条命令明确授予 analyst_wang 用户连接 sales_db 数据库的权限。

3. 授予表的SELECT和INSERT权限
需要为 analyst_wang 授予对 public 模式下 orders 表的查询和插入权限。
sql-- 授予 SELECT(查询)权限
GRANT SELECT ON TABLE orders TO analyst_wang;

-- 授予 INSERT(插入)权限
GRANT INSERT ON TABLE orders TO analyst_wang;

解析:

GRANT SELECT ON TABLE orders TO analyst_wang;:允许该用户执行 SELECT * FROM orders; 来查看数据。
GRANT INSERT ON TABLE orders TO analyst_wang;:允许该用户执行 INSERT INTO orders VALUES (...); 来添加新数据。

4. 权限回收与删除用户
当员工离职时,为了确保安全,应先回收其所有权限,再删除用户。
sql-- 步骤1:回收该用户对所有对象的所有权限(此处以回收 orders 表的权限为例)
REVOKE SELECT ON TABLE orders FROM analyst_wang;
REVOKE INSERT ON TABLE orders FROM analyst_wang;

-- 步骤2:回收数据库连接权限
REVOKE CONNECT ON DATABASE sales_db FROM analyst_wang;

-- 步骤3:删除用户(CASCADE 表示同时删除该用户拥有的所有对象)
DROP USER analyst_wang CASCADE;

解析:

REVOKE 语句用于撤销之前授予的权限。建议逐一回收,确保权限清理彻底。
DROP USER analyst_wang CASCADE;:删除该用户。使用 CASCADE 关键字可以自动删除该用户拥有的所有数据库对象(如表、视图等),避免残留数据导致错误。

总结:
创建用户和授权是数据库安全管理的核心操作。通过上述SQL语句,你完整地实现了用户创建(含密码失效策略)、数据库连接权限控制、数据表操作授权以及用户回收的全过程,满足了公司对员工账户生命周期管理的安全要求。
最佳回答
GBase用户50900发表于 2个月前
建议升级一下版本,新版本中可能已经修复了这个问题。
GBase用户51966发表于 2个月前
这个问题可以尝试从官方文档中寻找解决方案,文档中有详细的说明。
一个老汉发表于 2个月前
这个问题需要从多个角度排查,建议先确认一下环境信息。
GBase用户51510发表于 2个月前
可以试试看调整参数,有时候参数设置不当会导致此类问题。
GBase用户51511发表于 2个月前
可以试试看调整参数,有时候参数设置不当会导致此类问题。
佛洛伊得发表于 2个月前
这个问题之前有人遇到过,可以搜索一下论坛中的相关帖子。
塔山发表于 2个月前
可以参考一下相关文档,上面有详细的步骤说明。
用户头像
GBase用户28017发表于 2个月前
先revoke,后drop user
GBase用户21020发表于 2个月前
创建用户并设置过期;授权连接和表权限;回收删除。
李雪洋发表于 2个月前
创建用户并授予权限,离职后回收。
GBase用户21020发表于 2个月前
创建用户并授权操作。
李雪洋发表于 2个月前
创建用户,授权连接,授权表权限,离职回收删除。