跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

用户管理

使用 ngctl 管理悦数图数据库开发版的用户,包括创建用户、修改密码、启用、禁用、解锁和删除用户。

用户身份由 Meta 服务管理;服务组成员、角色和权限由 Graph 服务管理。创建用户后,还需单独配置访问权限。配套部署使用的服务组名为default_svcgrp。

前提条件

悦数图数据库开发版已启动。以下ngctl命令均在配套的ngctl容器中执行。创建、删除、重置密码等管理操作需以root登录 Meta 服务;修改用户密码无需提前登录。

  1. 在开发机终端进入compose.yaml所在目录,再进入容器:

    docker compose exec ngctl sh
    
  2. 执行管理操作时,登录 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。

  1. 邀请用户并授予连接权限:

    '''
    INVITE USER user1
    '''
    
    '''
    GRANT CONNECT TO USER user1
    '''
    
  2. 按为用户配置访问权限授予角色或资源权限。访问非默认 Schema 需要该 Schema 的USAGE;查询图还需要图上的MATCH。

  3. 使用 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。

命令参数见显示用户。