用户管理¶
使用 ngctl 管理悦数图数据库开发版的用户,包括创建用户、修改密码、启用、禁用、解锁和删除用户。
用户身份由 Meta 服务管理;服务组成员、角色和权限由 Graph 服务管理。创建用户后,还需单独配置访问权限。配套部署使用的服务组名为default_svcgrp。
前提条件¶
悦数图数据库开发版已启动。以下ngctl命令均在配套的ngctl容器中执行。创建、删除、重置密码等管理操作需以root登录 Meta 服务;修改用户密码无需提前登录。
-
在开发机终端进入
compose.yaml所在目录,再进入容器:docker compose exec ngctl sh -
执行管理操作时,登录 Meta 服务。将
<root-password>替换为root的当前密码:ngctl auth login -H graph-cluster -P 9559 -u root -p '<root-password>'使用实际密码字符;Compose 文件中的
$$在这里输入单个$。更多连接说明见在 Docker Compose 部署中运行 ngctl。使用独立安装的工具时,见登录 Meta 服务。
创建用户¶
创建用户user1并设置密码:
ngctl user create user1 --password Passwd123
成功后返回Create user successfully.。新用户默认处于启用状态,但尚未加入服务组。
通过认证信息指定密码
也可以使用以下命令创建同一个用户。两种写法任选一种:
ngctl user create user1 --auth-type password --auth-info '{"password":"Passwd123"}'
命令参数见创建用户。
允许用户访问服务组¶
用户创建后,切换到 GQL 客户端,以服务组 Owner(所有者)身份连接 Graph 服务。该用户具有内置角色ADMIN。
-
邀请用户并授予连接权限:
''' INVITE USER user1 ''' ''' GRANT CONNECT TO USER user1 ''' -
按为用户配置访问权限授予角色或资源权限。访问非默认 Schema 需要该 Schema 的
USAGE;查询图还需要图上的MATCH。 - 使用 SHOW USERS 确认成员关系,通过 SHOW ROLES FOR USER 和 SHOW PRIVILEGES FOR USER 检查授权记录,再以
user1连接并执行目标操作。
将 Schema 或图设置为用户的主 Schema、主图只会设置登录后的默认选择,不会授予资源访问权限。设置方法见 INVITE USER。
停止用户访问¶
根据需要停止的访问范围选择操作:
| 目标 | 操作 | 影响 |
|---|---|---|
| 阻止到服务组的新连接 | 撤销CONNECT |
保留用户和其他权限;现有会话不会自动终止。 |
| 撤销指定操作权限 | 撤销角色或权限 | 只移除指定的授权来源。 |
| 将用户移出服务组 | REMOVE USER | 移除成员关系及其在服务组中的角色和权限,保留 Meta 用户身份。 |
| 阻止新的密码登录 | ngctl user disable |
保留用户、成员关系和授权;无会话访问需单独停止。 |
| 永久删除用户 | ngctl user drop |
删除 Meta 用户,并将其移出服务组。 |
撤销CONNECT后如需立即终止已有会话,可通过 SHOW SESSIONS 查找会话,再执行 KILL SESSION。
删除用户¶
不能删除root或服务组 Owner。
删除用户
删除后,用户会从服务组中移除,其成员关系和授权也会删除。需要暂时停止密码登录时,使用禁用用户。
ngctl user drop user1
命令参数见删除用户。
密码管理¶
修改用户密码¶
使用ngctl auth passwd,通过自己的当前密码验证身份,无需提前登录 Meta 服务。新密码至少 8 个字符,包含大写字母、小写字母和数字。
将<username>、<current-password>和<new-password>替换为自己的用户名、当前密码和新密码:
ngctl auth passwd -H graph-cluster -P 9559 -u '<username>' -c '<current-password>' -p '<new-password>'
成功后返回Change password succeeded.。忘记当前密码时,请管理员重置用户密码。命令参数见修改用户密码。
管理员重置用户密码¶
先按前提条件以root登录 Meta 服务,再使用ngctl user alter为指定用户设置新密码,无需提供该用户的旧密码。以下将user1的密码重置为Nebula5678:
ngctl user alter user1 --password Nebula5678
成功后返回Alter user successfully.。
通过认证信息重置密码
以下写法与上面的命令等效,任选一种:
ngctl user alter user1 --auth-info '{"password":"Nebula5678"}'
目标用户已被禁用时,先启用用户再重置密码;如需保持禁用状态,重置后再次禁用。
命令参数见管理员重置用户密码。
使用上述任一方式修改部署账号root的密码时,还需按修改已有悦数图数据库开发版实例的 root 密码同步更新 Compose 配置。
启用或禁用用户¶
禁用用户,阻止其通过密码认证建立新连接:
ngctl user disable user1
重新启用用户:
ngctl user enable user1
这两项操作不删除成员关系、角色或权限。启用后,用户满足CONNECT等访问条件即可重新连接。
无会话访问
无会话模式跳过 Meta 用户认证,仅禁用sessionless_user指定的用户无法停止此类访问。停止方法见关闭无会话模式。
解锁被锁定的用户¶
密码登录在指定时间内失败次数过多时,系统会临时锁定用户。锁定规则由 Meta 服务的max_allowed_login_attempts、user_locked_mins和user_locked_window_mins配置控制。
手动解除临时锁定:
ngctl user unlock user1
unlock清除登录失败导致的锁定,enable用于重新启用被禁用的用户。命令参数见解锁用户。
查看用户¶
查看全部 Meta 用户:
ngctl user show
查看指定用户:
ngctl user show user1
结果中的Name为用户名,Active为启用状态:Y表示已启用,N表示已禁用。该结果不包含服务组中的资源授权;查看授权使用 Graph 服务的SHOW ROLES和SHOW PRIVILEGES。
命令参数见显示用户。