无会话模式¶
无会话模式允许 SDK 客户端使用空用户名和空密码连接悦数图数据库开发版。Graph 服务使用sessionless_user指定的用户身份检查请求权限。
共享用户权限
所有无会话客户端共享该用户的权限。请使用专门的普通用户,并仅授予应用所需权限;不要使用服务组 Owner 或具有ADMIN角色的用户。
前提条件¶
- 已按使用 Docker Compose 部署开发版启动悦数图数据库开发版。
- 已准备 Meta 服务的
root密码,以及具有ADMIN角色的 Graph 服务账号。 - 已明确应用需要访问的 Schema、图和操作,以便授予相应权限。
配置无会话模式¶
以下示例使用普通用户testUser1。用户创建命令在ngctl容器中执行;配置和容器管理命令在开发机的部署目录中执行。PowerShell 写法见启动命令说明。
-
按在 Docker Compose 部署中运行 ngctl 登录 Meta 服务,创建用户:
ngctl user create testUser1 --password testPassword1 -
以具有
ADMIN角色的用户连接 Graph 服务,邀请用户并授予连接权限:''' INVITE USER testUser1 ''' ''' GRANT CONNECT TO USER testUser1 '''再按为用户配置访问权限授予应用需要的资源权限。访问非默认 Schema 需要
USAGE,查询图还需要MATCH。 -
返回开发机终端,在
compose.yaml的services.graphd.command列表末尾添加--sessionless_user=testUser1,保留原有参数。修改后的列表如下,其余服务配置保持原值:services: graphd: command: - --meta_server_addrs=graph-cluster:9559 - --port=9669 - --host=graph-cluster - --memory_dynamic_reserved_gb=1 - --sessionless_user=testUser1 -
在
compose.yaml所在目录检查并应用配置。此操作会重新创建 Graph 容器,中断其已有连接:docker compose config --quiet ACCEPT_EULA=Y docker compose up -d graphd通过
docker compose ps --all检查容器状态。仅执行docker compose restart graphd不会应用修改后的启动参数。 -
在 SDK 中将用户名和密码均设为
"",连接 Graph 服务。执行RETURN 1 AS result,应返回1;再执行应用查询,确认testUser1可以访问所需资源。连接代码见 Java SDK 指南和 Go SDK 指南。
关闭无会话模式¶
从services.graphd.command中删除--sessionless_user=testUser1,保存后在部署目录执行:
docker compose config --quiet
ACCEPT_EULA=Y docker compose up -d graphd
Graph 容器重新创建后,空用户名和空密码不能再用于登录。客户端需使用正常的用户名和密码重新连接。
无会话模式跳过 Meta 用户认证,因此仅禁用testUser1不会停止无会话访问。撤销该用户的CONNECT可阻止新的无会话连接,但不会自动终止已有连接。