访问控制
GDS 目录为管理员用户提供更高的访问权限。任何被授予名为 `admin` 角色的用户都被 GDS 视为管理员。
GDS 管理员可以访问任何其他用户投影的图。这包括列出、删除和对这些图运行算法的能力。
示例
我们将通过一个小例子来说明管理员功能。在此示例中,我们有三个用户,其中一个是管理员。我们使用以下 Cypher 命令创建用户并设置角色
CREATE USER alice SET PASSWORD $alice_pw CHANGE NOT REQUIRED;
CREATE USER bob SET PASSWORD $bob_pw CHANGE NOT REQUIRED;
CREATE USER carol SET PASSWORD $carol_pw CHANGE NOT REQUIRED;
GRANT ROLE reader TO alice;
GRANT ROLE reader TO bob;
GRANT ROLE admin TO carol;
如我们所见,`alice` 和 `bob` 是对数据库具有读取权限的标准用户。`carol` 通过被授予 `admin` 角色而成为管理员(有关此角色的更多信息,请参阅操作手册)。
现在 `alice` 和 `bob` 各自投影了一些图。他们都投影了一个名为 `graphA` 的图,`bob` 还投影了一个名为 `graphB` 的图。
列表显示
要列出所有用户的图,`carol` 只需使用图列表程序。
以管理员用户身份列出所有图
CALL gds.graph.list()
YIELD graphName
图名称 |
---|
"graphA" |
"graphA" |
"graphB" |
请注意,由于 `carol` 被视为 GDS 管理员,所有用户的图对 `carol` 都是可见的。
对其他用户的图运行算法
carol
可以通过直接命名来使用 graphB
。
carol
可以在 bob
拥有的 graphB
图上运行 WCCCALL gds.wcc.stats('graphB')
YIELD componentCount
要使用 alice
拥有的 graphA
,carol
必须使用 username
覆盖。
carol
可以在 alice
拥有的 graphA
上运行 WCCCALL gds.wcc.stats('graphA', { username: 'alice' })
YIELD componentCount
删除其他用户的图
与列出不同,当使用 `username` 覆盖来消除歧义时,必须使用完整的存储过程签名。在下面的查询中,我们为删除过程的第二个和第三个参数使用了默认值。`username` 是第四个参数。更多详情请参阅删除图。
要删除
bob
拥有的 graphA
,carol
可以运行以下命令CALL gds.graph.drop('graphA', true, '', 'bob')
YIELD graphName