DBMS 权限

所有 DBMS 权限都与系统范围相关。与用户管理一样,它们不属于特定数据库或图。有关图、数据库和 DBMS 之间差异的更多详细信息,请参阅Cypher 手册 → Cypher 和 Neo4j

privileges grant and deny syntax dbms privileges
图 1. GRANT 和 DENY DBMS 权限语法
privileges hierarchy dbms
图 2. DBMS 权限层级

admin 角色拥有多项内置权限。这些权限包括

  • 创建、删除和修改数据库及别名。

  • 更改配置参数。

  • 管理事务。

  • 管理用户和角色。

  • 管理子图权限。

  • 管理过程安全性。

  • 加载数据。

要使用户能够执行这些任务,您可以授予他们 admin 角色,但也可以创建包含这些权限子集的自定义角色。所有权限也可以使用 Cypher 命令分配。有关更多详细信息,请参阅以下部分

使用自定义角色管理 DBMS 权限

为了拥有一个管理员角色,它包含所有 DBMS 权限但并非所有数据库权限的子集,您可以复制 admin 角色并撤销或拒绝不需要的权限。第二种选择是通过授予所需的权限从头开始构建自定义管理员。

例如,可以使用第二种选择创建一个只管理用户和角色的管理员角色

  1. 首先,创建新角色

    CREATE ROLE usermanager
  2. 然后授予管理用户的权限

    GRANT USER MANAGEMENT ON DBMS TO usermanager
  3. 以及管理角色的权限

    GRANT ROLE MANAGEMENT ON DBMS TO usermanager

结果角色具有仅允许用户和角色管理的权限。要将角色 usermanager 的所有权限列为命令,请运行此查询

SHOW ROLE usermanager PRIVILEGES AS COMMANDS
表 1. 结果
命令

"GRANT ROLE MANAGEMENT ON DBMS TO `usermanager`"

"GRANT USER MANAGEMENT ON DBMS TO `usermanager`"

行数:2

请注意,此角色不允许所有 DBMS 功能。例如,该角色缺少管理、创建和删除数据库以及执行 admin 过程的权限。要创建更强大的管理员,您可以授予一组不同的权限。

在以下示例中,创建了一个新的管理员角色,以执行几乎所有 DBMS 功能,但数据库管理除外。但是,该角色仍然具有一些有限的数据库功能,例如管理事务

  1. 再次,从创建新角色开始

    CREATE ROLE customAdministrator
  2. 然后授予所有 DBMS 功能的权限

    GRANT ALL DBMS PRIVILEGES ON DBMS TO customAdministrator
  3. 并明确拒绝管理数据库的权限

    DENY DATABASE MANAGEMENT ON DBMS TO customAdministrator
  4. 接下来,授予事务管理权限

    GRANT TRANSACTION MANAGEMENT (*) ON DATABASE * TO customAdministrator

结果角色具有的权限包括所有 DBMS 权限,但创建、删除和修改数据库以及管理事务的权限除外。使用以下查询将角色 customAdministrator 的所有权限列为命令

SHOW ROLE customAdministrator PRIVILEGES AS COMMANDS
表 2. 结果
命令

"DENY DATABASE MANAGEMENT ON DBMS TO `customAdministrator`"

"GRANT ALL DBMS PRIVILEGES ON DBMS TO `customAdministrator`"

"GRANT TRANSACTION MANAGEMENT (*) ON DATABASE * TO `customAdministrator`"

行数:3

DBMS ROLE MANAGEMENT 权限

用于角色管理的 DBMS 权限可以使用 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。

有关语法描述的更多详细信息,请参阅数据库管理命令语法

表 3. 角色管理权限命令语法
命令 描述
GRANT [IMMUTABLE] CREATE ROLE
  ON DBMS
  TO role[, ...]

使指定角色能够创建新角色。

GRANT [IMMUTABLE] RENAME ROLE
  ON DBMS
  TO role[, ...]

使指定角色能够更改角色名称。

GRANT [IMMUTABLE] DROP ROLE
  ON DBMS
  TO role[, ...]

使指定角色能够删除角色。

GRANT [IMMUTABLE] ASSIGN ROLE
  ON DBMS
  TO role[, ...]

使指定角色能够将角色分配给用户。

GRANT [IMMUTABLE] REMOVE ROLE
  ON DBMS
  TO role[, ...]

使指定角色能够从用户中移除角色。

GRANT [IMMUTABLE] SHOW ROLE
  ON DBMS
  TO role[, ...]

使指定角色能够列出角色。

GRANT [IMMUTABLE] ROLE MANAGEMENT
  ON DBMS
  TO role[, ...]

使指定角色能够创建、删除、分配、移除和列出角色。

通过 CREATE ROLE 权限可以授予添加角色的能力。请看示例

GRANT CREATE ROLE ON DBMS TO roleAdder

结果角色具有仅允许添加角色的权限。使用以下查询将角色 roleAdder 的所有权限列为命令

SHOW ROLE roleAdder PRIVILEGES AS COMMANDS
表 4. 结果
命令

"GRANT CREATE ROLE ON DBMS TO `roleAdder`"

行数:1

通过 RENAME ROLE 权限可以授予重命名角色的能力。请看示例

GRANT RENAME ROLE ON DBMS TO roleNameModifier

结果角色具有仅允许重命名角色的权限。使用以下查询列出角色 roleNameModifier 的所有权限

SHOW ROLE roleNameModifier PRIVILEGES AS COMMANDS
表 5. 结果
命令

"GRANT RENAME ROLE ON DBMS TO `roleNameModifier`"

行数:1

通过 DROP ROLE 权限可以授予删除角色的能力。请看示例

GRANT DROP ROLE ON DBMS TO roleDropper

结果角色具有仅允许删除角色的权限。使用以下查询列出角色 roleDropper 的所有权限

SHOW ROLE roleDropper PRIVILEGES AS COMMANDS
表 6. 结果
命令

"GRANT DROP ROLE ON DBMS TO `roleDropper`"

行数:1

通过 ASSIGN ROLE 权限可以授予将角色分配给用户的能力。请看示例

GRANT ASSIGN ROLE ON DBMS TO roleAssigner

结果角色具有仅允许分配/授予角色的权限。使用以下查询将角色 roleAssigner 的所有权限列为命令

SHOW ROLE roleAssigner PRIVILEGES AS COMMANDS
表 7. 结果
命令

"GRANT ASSIGN ROLE ON DBMS TO `roleAssigner`"

行数:1

通过 REMOVE ROLE 权限可以授予从用户中移除角色的能力。请看示例

GRANT REMOVE ROLE ON DBMS TO roleRemover

结果角色具有仅允许移除/撤销角色的权限。使用以下查询将角色 roleRemover 的所有权限列为命令

SHOW ROLE roleRemover PRIVILEGES AS COMMANDS
表 8. 结果
命令

"GRANT REMOVE ROLE ON DBMS TO `roleRemover`"

行数:1

通过 SHOW ROLE 权限可以授予显示角色的能力。具有此权限的角色被允许执行 SHOW ROLESSHOW POPULATED ROLES 管理命令。对于 SHOW ROLES WITH USERSSHOW POPULATED ROLES WITH USERS 管理命令,需要同时具备此权限和 SHOW USER 权限。以下查询显示了如何授予 SHOW ROLE 权限的示例

为了使用 SHOW ROLES WITH USERSSHOW POPULATED ROLES WITH USERS 管理命令,需要同时具备 SHOW ROLESHOW USER 权限。请看一个如何授予 SHOW ROLE 权限的示例

GRANT SHOW ROLE ON DBMS TO roleShower

结果角色具有仅允许显示角色的权限。使用以下查询将角色 roleShower 的所有权限列为命令

SHOW ROLE roleShower PRIVILEGES AS COMMANDS
表 9. 结果
命令

"GRANT SHOW ROLE ON DBMS TO `roleShower`"

行数:1

通过 ROLE MANAGEMENT 权限可以授予创建、重命名、删除、分配、移除和列出角色的权限。请看示例

GRANT ROLE MANAGEMENT ON DBMS TO roleManager

结果角色拥有管理角色的所有权限。使用以下查询将角色 roleManager 的所有权限列为命令

SHOW ROLE roleManager PRIVILEGES AS COMMANDS
表 10. 结果
命令

"GRANT ROLE MANAGEMENT ON DBMS TO `roleManager`"

行数:1

DBMS USER MANAGEMENT 权限

用于用户管理的 DBMS 权限可以使用 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。

有关语法描述的更多详细信息,请参阅数据库管理命令语法

表 11. 用户管理权限命令语法
命令 描述
GRANT [IMMUTABLE] CREATE USER
  ON DBMS
  TO role[, ...]

使指定角色能够创建新用户。

GRANT [IMMUTABLE] RENAME USER
  ON DBMS
  TO role[, ...]

使指定角色能够更改用户名称。

GRANT [IMMUTABLE] ALTER USER
  ON DBMS
  TO role[, ...]

使指定角色能够修改用户。

GRANT [IMMUTABLE] SET PASSWORD[S]
  ON DBMS
  TO role[, ...]

使指定角色能够修改用户密码以及这些密码是否在首次登录时必须更改。

GRANT [IMMUTABLE] SET AUTH
  ON DBMS
  TO role[, ...]

使指定角色能够 SETREMOVE 用户的认证提供者

GRANT [IMMUTABLE] SET USER HOME DATABASE
  ON DBMS
  TO role[, ...]

使指定角色能够修改用户的 home 数据库。

GRANT [IMMUTABLE] SET USER STATUS
  ON DBMS
  TO role[, ...]

使指定角色能够修改用户的账户状态。

GRANT [IMMUTABLE] DROP USER
  ON DBMS
  TO role[, ...]

使指定角色能够删除用户。

GRANT [IMMUTABLE] SHOW USER
  ON DBMS
  TO role[, ...]

使指定角色能够列出用户。

GRANT [IMMUTABLE] USER MANAGEMENT
  ON DBMS
  TO role[, ...]

使指定角色能够创建、删除、修改和列出用户。

通过 CREATE USER 权限可以授予添加用户的能力。请看示例

GRANT CREATE USER ON DBMS TO userAdder

结果角色具有仅允许添加用户的权限。使用此查询将角色 userAdder 的所有权限列为命令

SHOW ROLE userAdder PRIVILEGES AS COMMANDS
表 12. 结果
命令

"GRANT CREATE USER ON DBMS TO `userAdder`"

行数:1

通过 RENAME USER 权限可以授予重命名用户的能力。以下查询显示了此示例

GRANT RENAME USER ON DBMS TO userNameModifier

结果角色具有仅允许重命名用户的权限

SHOW ROLE userNameModifier PRIVILEGES AS COMMANDS

列出角色 userNameModifier 的所有权限

表 13. 结果
命令

"GRANT RENAME USER ON DBMS TO `userNameModifier`"

行数:1

通过 ALTER USER 权限可以授予修改用户的能力。请看示例

GRANT ALTER USER ON DBMS TO userModifier

结果角色具有仅允许修改用户的权限。使用以下查询将角色 userModifier 的所有权限列为命令

SHOW ROLE userModifier PRIVILEGES AS COMMANDS
表 14. 结果
命令

"GRANT ALTER USER ON DBMS TO `userModifier`"

行数:1

被授予 ALTER USER 权限的用户被允许运行 ALTER USER 管理命令,其中包含一个或多个 SET PASSWORDSET PASSWORD CHANGE [NOT] REQUIREDSET AUTHREMOVE AUTHSET STATUS 部分

ALTER USER jake SET PASSWORD 'verysecret' SET STATUS SUSPENDED

通过 SET PASSWORDS 权限可以授予修改用户密码以及这些密码是否在首次登录时必须更改的能力。请看示例

GRANT SET PASSWORDS ON DBMS TO passwordModifier

结果角色具有仅允许修改用户密码以及这些密码是否在首次登录时必须更改的权限。使用以下查询将角色 passwordModifier 的所有权限列为命令

SHOW ROLE passwordModifier PRIVILEGES AS COMMANDS
表 15. 结果
命令

"GRANT SET PASSWORD ON DBMS TO `passwordModifier`"

行数:1

被授予 SET PASSWORDS 权限的用户被允许运行 ALTER USER 管理命令,其中包含 SET PASSWORDSET PASSWORD CHANGE [NOT] REQUIRED 部分中的一个或两个

ALTER USER jake SET PASSWORD 'abcd5678' CHANGE NOT REQUIRED

被授予 SET AUTH 权限的用户被允许运行 ALTER USER 管理命令,其中包含 SET AUTHREMOVE AUTH 部分中的一个或两个

ALTER USER jake REMOVE AUTH 'native SET AUTH 'oidc-okta' { SET id 'jakesUniqueOktaUserId' }

通过 SET USER STATUS 权限可以授予修改用户账户状态的能力。请看示例

GRANT SET USER STATUS ON DBMS TO statusModifier

结果角色具有仅允许修改用户账户状态的权限。使用以下查询将角色 statusModifier 的所有权限列为命令

SHOW ROLE statusModifier PRIVILEGES AS COMMANDS
表 16. 结果
命令

"GRANT SET USER STATUS ON DBMS TO `statusModifier`"

行数:1

被授予 SET USER STATUS 权限的用户被允许运行 ALTER USER 管理命令,其中只包含 SET STATUS 部分

ALTER USER jake SET STATUS ACTIVE

为了能够修改用户的 home 数据库,授予 SET USER HOME DATABASE 权限。请看示例

GRANT SET USER HOME DATABASE ON DBMS TO statusModifier

结果角色具有仅允许修改用户 home 数据库的权限。使用以下查询将角色 statusModifier 的所有权限列为命令

SHOW ROLE statusModifier PRIVILEGES AS COMMANDS
表 17. 结果
命令

"GRANT SET USER HOME DATABASE ON DBMS TO `statusModifier`"

"GRANT SET USER STATUS ON DBMS TO `statusModifier`"

行数:2

被授予 SET USER HOME DATABASE 权限的用户被允许运行 ALTER USER 管理命令,其中只包含 SET HOME DATABASEREMOVE HOME DATABASE 部分

ALTER USER jake SET HOME DATABASE otherDb
ALTER USER jake REMOVE HOME DATABASE

请注意,SET PASSWORDSSET AUTHSET USER STATUSSET USER HOME DATABASE 权限操作的组合等同于 ALTER USER 权限操作。

通过 DROP USER 权限可以授予删除用户的能力。请看示例

GRANT DROP USER ON DBMS TO userDropper

结果角色具有仅允许删除用户的权限。使用以下查询将角色 userDropper 的所有权限列为命令

SHOW ROLE userDropper PRIVILEGES AS COMMANDS
表 18. 结果
命令

"GRANT DROP USER ON DBMS TO `userDropper`"

行数:1

通过 SHOW USER 权限可以授予显示用户的能力。请看示例

GRANT SHOW USER ON DBMS TO userShower

结果角色具有仅允许显示用户的权限。使用以下查询将角色 userShower 的所有权限列为命令

SHOW ROLE userShower PRIVILEGES AS COMMANDS
表 19. 结果
命令

"GRANT SHOW USER ON DBMS TO `userShower`"

行数:1

通过 USER MANAGEMENT 权限可以授予创建、重命名、修改、删除和列出用户的权限。请看示例

GRANT USER MANAGEMENT ON DBMS TO userManager

结果角色拥有管理用户的所有权限。使用以下查询将角色 userManager 的所有权限列为命令

SHOW ROLE userManager PRIVILEGES AS COMMANDS
表 20. 结果
命令

"GRANT SHOW USER ON DBMS TO `userManager`"

行数:1

DBMS IMPERSONATE 权限

用于模拟的 DBMS 权限可以通过 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。

模拟是指用户能够承担另一个用户的角色(以及因此的权限),但受到限制,不能以被模拟用户的身份执行更新 admin 命令(即,他们仍然能够使用 SHOW 命令)。

通过 IMPERSONATE 权限可以授予模拟用户的能力。

有关语法描述的更多详细信息,请参阅数据库管理命令语法

表 21. 模拟权限命令语法
命令 描述
GRANT [IMMUTABLE] IMPERSONATE [(*)]
    ON DBMS
    TO role[, ...]

使指定角色能够模拟任何用户。

GRANT [IMMUTABLE] IMPERSONATE (user[, ...])
    ON DBMS
    TO role[, ...]

使指定角色能够模拟指定用户。

以下查询显示了此示例。请注意,userImpersonator 必须是现有角色才能使此查询生效

查询
GRANT IMPERSONATE (*) ON DBMS TO userImpersonator

结果角色具有允许模拟所有用户的权限

查询
SHOW ROLE userImpersonator PRIVILEGES AS COMMANDS
表 22. 结果
命令

"GRANT IMPERSONATE (*) ON DBMS TO `userImpersonator`"

行数:1

也可以拒绝和撤销该权限。请看一个示例,它显示了 userImpersonator 用户如何能够模拟所有用户,除了 alice

查询
DENY IMPERSONATE (alice) ON DBMS TO userImpersonator

要授予(或撤销)模拟特定用户或用户子集的权限,您可以首先使用此查询列出它们

查询
GRANT IMPERSONATE (alice, bob) ON DBMS TO userImpersonator

DBMS DATABASE MANAGEMENT 权限

用于数据库管理的 DBMS 权限可以通过 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。

有关语法描述的更多详细信息,请参阅数据库管理命令语法

表 23. 数据库管理权限命令语法
命令 描述
GRANT [IMMUTABLE] CREATE DATABASE
  ON DBMS
  TO role[, ...]

使指定角色能够创建新的标准数据库。

GRANT [IMMUTABLE] DROP DATABASE
  ON DBMS
  TO role[, ...]

使指定角色能够删除标准数据库。

GRANT [IMMUTABLE] ALTER DATABASE
  ON DBMS
  TO role[, ...]

使指定角色能够修改标准数据库。

GRANT [IMMUTABLE] SET DATABASE ACCESS
  ON DBMS
  TO role[, ...]

使指定角色能够修改对标准数据库的访问。

GRANT CREATE COMPOSITE DATABASE
  ON DBMS
  TO role[, ...]

使指定角色能够创建新的复合数据库。

GRANT DROP COMPOSITE DATABASE
  ON DBMS
  TO role[, ...]

使指定角色能够删除复合数据库。

GRANT COMPOSITE DATABASE MANAGEMENT
  ON DBMS
  TO role[, ...]

使指定角色能够创建和删除复合数据库。

GRANT [IMMUTABLE] DATABASE MANAGEMENT
  ON DBMS
  TO role[, ...]

使指定角色能够创建、删除和修改数据库。

通过 CREATE DATABASE 权限可以授予创建标准数据库的能力。请看示例

GRANT CREATE DATABASE ON DBMS TO databaseAdder

结果角色具有仅允许创建标准数据库的权限。使用以下查询将角色 databaseAdder 的所有权限列为命令

SHOW ROLE databaseAdder PRIVILEGES AS COMMANDS
表 24. 结果
命令

"GRANT CREATE DATABASE ON DBMS TO `databaseAdder`"

行数:1

通过 CREATE COMPOSITE DATABASE 权限可以授予创建复合数据库的能力。请看示例

GRANT CREATE COMPOSITE DATABASE ON DBMS TO compositeDatabaseAdder

结果角色具有仅允许创建复合数据库的权限。使用以下查询将角色 compositeDatabaseAdder 的所有权限列为命令

SHOW ROLE compositeDatabaseAdder PRIVILEGES AS COMMANDS
表 25. 结果
命令

"GRANT CREATE COMPOSITE DATABASE ON DBMS TO `compositeDatabaseAdder`"

行数:1

通过 DROP DATABASE 权限可以授予删除标准数据库的能力。请看示例

GRANT DROP DATABASE ON DBMS TO databaseDropper

结果角色具有仅允许删除标准数据库的权限。使用以下查询将角色 databaseDropper 的所有权限列为命令

SHOW ROLE databaseDropper PRIVILEGES AS COMMANDS
表 26. 结果
命令

"GRANT DROP DATABASE ON DBMS TO `databaseDropper`"

行数:1

通过 DROP COMPOSITE DATABASE 权限可以授予删除复合数据库的能力。请看示例

GRANT DROP COMPOSITE DATABASE ON DBMS TO compositeDatabaseDropper

结果角色具有仅允许删除复合数据库的权限。使用以下查询将角色 compositeDatabaseDropper 的所有权限列为命令

SHOW ROLE compositeDatabaseDropper PRIVILEGES AS COMMANDS
表 27. 结果
命令

"GRANT DROP COMPOSITE DATABASE ON DBMS TO `compositeDatabaseDropper`"

行数:1

通过 ALTER DATABASE 权限可以授予修改标准数据库的能力。请看示例

GRANT ALTER DATABASE ON DBMS TO databaseModifier

结果角色具有仅允许修改标准数据库的权限。使用以下查询将角色 databaseModifier 的所有权限列为命令

SHOW ROLE databaseModifier PRIVILEGES AS COMMANDS
表 28. 结果
命令

"GRANT ALTER DATABASE ON DBMS TO `databaseModifier`"

行数:1

通过 SET DATABASE ACCESS 权限可以授予修改对标准数据库的访问权限的能力。请看示例

GRANT SET DATABASE ACCESS ON DBMS TO accessModifier

结果角色具有仅允许修改对标准数据库的访问权限的权限。使用以下查询将角色 accessModifier 的所有权限列为命令

SHOW ROLE accessModifier PRIVILEGES AS COMMANDS
表 29. 结果
命令

"GRANT SET DATABASE ACCESS ON DBMS TO `accessModifier`"

行数:1

通过 COMPOSITE DATABASE MANAGEMENT 权限可以授予创建和删除复合数据库的能力。请看示例

GRANT COMPOSITE DATABASE MANAGEMENT ON DBMS TO compositeDatabaseManager

结果角色拥有管理复合数据库的所有权限。使用以下查询将角色 compositeDatabaseManager 的所有权限列为命令

SHOW ROLE compositeDatabaseManager PRIVILEGES AS COMMANDS
表 30. 结果
命令

"GRANT COMPOSITE DATABASE MANAGEMENT ON DBMS TO `compositeDatabaseManager`"

行数:1

通过 DATABASE MANAGEMENT 权限可以授予创建、删除和修改数据库的能力。请看示例

GRANT DATABASE MANAGEMENT ON DBMS TO databaseManager

结果角色拥有管理标准和复合数据库以及别名的所有权限。使用以下查询将角色 databaseManager 的所有权限列为命令

SHOW ROLE databaseManager PRIVILEGES AS COMMANDS
表 31. 结果
命令

"GRANT DATABASE MANAGEMENT ON DBMS TO `databaseManager`"

行数:1

DBMS ALIAS MANAGEMENT 权限

用于别名管理的 DBMS 权限可以使用 Cypher 管理命令进行分配,并可应用于本地和远程别名。它们可以像其他权限一样被授予、拒绝和撤销。也可以使用数据库管理命令管理别名。

有关语法描述的更多详细信息,请参阅数据库管理命令语法

表 32. 别名管理权限命令语法
命令 描述
GRANT [IMMUTABLE] CREATE ALIAS
ON DBMS
TO role[, ...]

使指定角色能够创建新别名。

GRANT [IMMUTABLE] DROP ALIAS
ON DBMS
TO role[, ...]

使指定角色能够删除别名。

GRANT [IMMUTABLE] ALTER ALIAS
ON DBMS
TO role[, ...]

使指定角色能够修改别名。

GRANT [IMMUTABLE] SHOW ALIAS
ON DBMS
TO role[, ...]

使指定角色能够列出别名。

GRANT [IMMUTABLE] ALIAS MANAGEMENT
ON DBMS
TO role[, ...]

使指定角色能够列出、创建、删除和修改别名。

通过 CREATE ALIAS 权限可以授予创建别名的能力。请看示例

GRANT CREATE ALIAS ON DBMS TO aliasAdder

结果角色具有仅允许创建别名的权限。使用以下查询将角色 aliasAdder 的所有权限列为命令

SHOW ROLE aliasAdder PRIVILEGES AS COMMANDS
表 33. 结果
命令

"GRANT CREATE ALIAS ON DBMS TO `aliasAdder`"

行数:1

通过 DROP ALIAS 权限可以授予删除别名的能力。请看示例

GRANT DROP ALIAS ON DBMS TO aliasDropper

结果角色具有仅允许删除别名的权限。使用以下查询列出角色 aliasDropper 的所有权限

SHOW ROLE aliasDropper PRIVILEGES AS COMMANDS
表 34. 结果
命令

"GRANT DROP ALIAS ON DBMS TO `aliasDropper`"

行数:1

通过 ALTER ALIAS 权限可以授予修改别名的能力。请看示例

GRANT ALTER ALIAS ON DBMS TO aliasModifier

结果角色具有仅允许修改别名的权限。使用以下查询将角色 aliasModifier 的所有权限列为命令

SHOW ROLE aliasModifier PRIVILEGES AS COMMANDS
表 35. 结果
命令

"GRANT ALTER ALIAS ON DBMS TO `aliasModifier`"

行数:1

通过 SHOW ALIAS 权限可以授予列出别名的能力。请看示例

GRANT SHOW ALIAS ON DBMS TO aliasLister

结果角色具有仅允许修改别名的权限。使用以下查询将角色 aliasLister 的所有权限列为命令

SHOW ROLE aliasLister PRIVILEGES AS COMMANDS
表 36. 结果
命令

"GRANT SHOW ALIAS ON DBMS TO `aliasLister`"

行数:1

通过 ALIAS MANAGEMENT 权限可以授予列出、创建、删除和修改别名的权限。请看示例

GRANT ALIAS MANAGEMENT ON DBMS TO aliasManager

结果角色拥有管理别名的所有权限。使用以下查询将角色 aliasManager 的所有权限列为命令

SHOW ROLE aliasManager PRIVILEGES AS COMMANDS
表 37. 结果
命令

"GRANT ALIAS MANAGEMENT ON DBMS TO `aliasManager`"

行数:1

DBMS SERVER MANAGEMENT 权限

用于服务器管理的 DBMS 权限可以使用 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。

有关语法描述的更多详细信息,请参阅数据库管理命令语法

表 38. 服务器管理权限命令语法
命令 描述
GRANT [IMMUTABLE] SERVER MANAGEMENT
  ON DBMS
  TO role[, ...]

使指定角色能够显示、启用、重命名、更改、重新分配、解除分配和删除服务器。

GRANT [IMMUTABLE] SHOW SERVERS
  ON DBMS
  TO role[, ...]

使指定角色能够显示服务器。

DBMS PRIVILEGE MANAGEMENT 权限

用于权限管理的 DBMS 权限可以通过 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。

有关语法描述的更多详细信息,请参阅数据库管理命令语法

表 39. 权限管理权限命令语法
命令 描述
GRANT [IMMUTABLE] SHOW PRIVILEGE
  ON DBMS
  TO role[, ...]

使指定角色能够列出权限。

GRANT [IMMUTABLE] ASSIGN PRIVILEGE
  ON DBMS
  TO role[, ...]

使指定角色能够使用 GRANTDENY 命令分配权限。

GRANT [IMMUTABLE] REMOVE PRIVILEGE
  ON DBMS
  TO role[, ...]

使指定角色能够使用 REVOKE 命令移除权限。

GRANT [IMMUTABLE] PRIVILEGE MANAGEMENT
  ON DBMS
  TO role[, ...]

使指定角色能够列出、分配和移除权限。

通过 SHOW PRIVILEGE 权限可以授予列出权限的能力。

具有此权限的用户被允许执行 SHOW PRIVILEGESSHOW ROLE roleName PRIVILEGES 管理命令。要执行 SHOW USER username PRIVILEGES 管理命令,需要同时具备此权限和 SHOW USER 权限。以下查询显示了如何授予 SHOW PRIVILEGE 权限的示例

GRANT SHOW PRIVILEGE ON DBMS TO privilegeShower

结果角色具有仅允许显示权限的权限。使用以下查询将角色 privilegeShower 的所有权限列为命令

SHOW ROLE privilegeShower PRIVILEGES AS COMMANDS
表 40. 结果
命令

"GRANT SHOW PRIVILEGE ON DBMS TO `privilegeShower`"

行数:1

请注意,通过 SHOW USER username PRIVILEGESSHOW USER PRIVILEGES 命令显示当前用户的权限不需要任何特定权限。

此外,请注意,如果使用非原生认证提供者(如 LDAP),SHOW USER PRIVILEGES 将只能在有限的能力下工作,即只允许用户显示自己的权限。使用非原生认证提供者时,无法列出其他用户的权限。

通过 ASSIGN PRIVILEGE 权限可以授予将权限分配给角色的能力。具有此权限的用户被允许执行 GRANTDENY 管理命令。请看一个如何授予此权限的示例

GRANT ASSIGN PRIVILEGE ON DBMS TO privilegeAssigner

结果角色具有仅允许分配权限的权限。使用以下查询将角色 privilegeAssigner 的所有权限列为命令

SHOW ROLE privilegeAssigner PRIVILEGES AS COMMANDS
表 41. 结果
命令

"GRANT ASSIGN PRIVILEGE ON DBMS TO `privilegeAssigner`"

行数:1

通过 REMOVE PRIVILEGE 权限可以授予从角色中移除权限的能力。

具有此权限的用户被允许执行 REVOKE 管理命令。请看一个如何授予此权限的示例

GRANT REMOVE PRIVILEGE ON DBMS TO privilegeRemover

结果角色具有仅允许移除权限的权限。使用以下查询将角色 privilegeRemover 的所有权限列为命令

SHOW ROLE privilegeRemover PRIVILEGES AS COMMANDS
表 42. 结果
命令

"GRANT REMOVE PRIVILEGE ON DBMS TO `privilegeRemover`"

行数:1

通过 PRIVILEGE MANAGEMENT 权限可以授予列出、分配和移除权限的权限。请看示例

GRANT PRIVILEGE MANAGEMENT ON DBMS TO privilegeManager

结果角色拥有管理权限的所有权限。使用以下查询将角色 privilegeManager 的所有权限列为命令

SHOW ROLE privilegeManager PRIVILEGES AS COMMANDS
表 43. 结果
命令

"GRANT PRIVILEGE MANAGEMENT ON DBMS TO `privilegeManager`"

行数:1

DBMS EXECUTE 权限

用于过程和用户定义函数执行的 DBMS 权限可以通过 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。

有关语法描述的更多详细信息,请参阅数据库管理命令语法

表 44. 执行权限命令语法
命令 描述
GRANT [IMMUTABLE] EXECUTE PROCEDURE[S] name-globbing[, ...]
  ON DBMS
  TO role[, ...]

使指定角色能够执行给定过程。

GRANT [IMMUTABLE] EXECUTE BOOSTED PROCEDURE[S] name-globbing[, ...]
  ON DBMS
  TO role[, ...]

使指定角色在执行给定过程时能够使用提升的权限。

GRANT [IMMUTABLE] EXECUTE ADMIN[ISTRATOR] PROCEDURES
  ON DBMS
  TO role[, ...]

使指定角色能够执行带有 @Admin 注解的过程。这些过程以提升的权限执行。

GRANT [IMMUTABLE] EXECUTE [USER [DEFINED]] FUNCTION[S] name-globbing[, ...]
  ON DBMS
  TO role[, ...]

使指定角色能够执行给定用户定义函数。

GRANT [IMMUTABLE] EXECUTE BOOSTED [USER [DEFINED]] FUNCTION[S] name-globbing[, ...]
  ON DBMS
  TO role[, ...]

使指定角色在执行给定用户定义函数时能够使用提升的权限。

EXECUTE PROCEDURE 权限

执行过程的能力可以通过 EXECUTE PROCEDURE 权限授予。具有此权限的角色被允许执行与名称通配符匹配的过程。以下查询显示了如何授予此权限的示例

GRANT EXECUTE PROCEDURE db.schema.* ON DBMS TO procedureExecutor

拥有 procedureExecutor 角色的用户可以运行 db.schema 命名空间中的任何过程。该过程使用用户自己的权限运行。

结果角色具有仅允许执行 db.schema 命名空间中的过程的权限。使用以下查询将角色 procedureExecutor 的所有权限列为命令

SHOW ROLE procedureExecutor PRIVILEGES AS COMMANDS
表 45. 结果
命令

"GRANT EXECUTE PROCEDURE db.schema.* ON DBMS TO `procedureExecutor`"

行数:1

为了允许执行所有过程但只排除少数几个,您可以授予 EXECUTE PROCEDURES * 并拒绝不需要的过程。例如,以下查询允许执行所有过程,除了以 dbms.cluster 开头的那些

GRANT EXECUTE PROCEDURE * ON DBMS TO deniedProcedureExecutor
DENY EXECUTE PROCEDURE dbms.cluster* ON DBMS TO deniedProcedureExecutor

结果角色具有仅允许执行所有过程(以 dbms.cluster 开头的除外)的权限。使用以下查询将角色 deniedProcedureExecutor 的所有权限列为命令

SHOW ROLE deniedProcedureExecutor PRIVILEGES AS COMMANDS
表 46. 结果
命令

"DENY EXECUTE PROCEDURE dbms.cluster* ON DBMS TO `deniedProcedureExecutor`"

"GRANT EXECUTE PROCEDURE * ON DBMS TO `deniedProcedureExecutor`"

行数:2

dbms.cluster.checkConnectivitydbms.cluster.cordonServerdbms.cluster.protocolsdbms.cluster.readReplicaToggledbms.cluster.routing.getRoutingTabledbms.cluster.secondaryReplicationDisabledbms.cluster.setAutomaticallyEnableFreeServersdbms.cluster.uncordonServer 等过程以及任何其他以 dbms.cluster 开头的过程都将被阻止。

EXECUTE BOOSTED PROCEDURE 权限

在执行过程时使用提升权限的能力可以通过 EXECUTE BOOSTED PROCEDURE 权限授予。具有此权限的用户在执行与名称通配符匹配的过程时不会受到其其他权限的限制。EXECUTE BOOSTED PROCEDURE 权限仅影响权限提升,而不影响过程的执行。因此,还需要为这些过程授予 EXECUTE PROCEDURE 权限。执行具有提升权限的过程需要同时具备 EXECUTE PROCEDUREEXECUTE BOOSTED PROCEDURE 权限。

GRANT EXECUTE PROCEDURE * ON DBMS TO boostedProcedureExecutor;
GRANT EXECUTE BOOSTED PROCEDURE db.labels, db.relationshipTypes ON DBMS TO boostedProcedureExecutor

因此,拥有 boostedProcedureExecutor 角色的用户可以以完全权限运行 db.labelsdb.relationshipTypes 过程,查看图中的所有内容,而不仅仅是用户具有 TRAVERSE 权限的标签和类型。如果没有 EXECUTE PROCEDURE,则根本无法执行任何过程。

结果角色具有允许以提升权限执行 db.labelsdb.relationshipTypes 过程的权限,以及以用户自身权限执行所有其他过程的权限

SHOW ROLE boostedProcedureExecutor PRIVILEGES AS COMMANDS
表 47. 结果
命令

"GRANT EXECUTE PROCEDURE * ON DBMS TO `boostedProcedureExecutor`"

"GRANT EXECUTE BOOSTED PROCEDURE db.labels ON DBMS TO `boostedProcedureExecutor`"

"GRANT EXECUTE BOOSTED PROCEDURE db.relationshipTypes ON DBMS TO `boostedProcedureExecutor`"

行数:3

与授予一样,单独拒绝 EXECUTE BOOSTED PROCEDURE 仅影响权限提升,而不影响过程的执行。这可以在以下示例中看到

示例 1. 授予 EXECUTE PROCEDURE 并拒绝 EXECUTE BOOSTED PROCEDURE
GRANT EXECUTE PROCEDURE * ON DBMS TO deniedBoostedProcedureExecutor1
DENY EXECUTE BOOSTED PROCEDURE db.labels ON DBMS TO deniedBoostedProcedureExecutor1

结果角色具有允许使用用户自身权限执行所有过程的权限。它还阻止了 db.labels 过程的权限提升。尽管如此,被拒绝的 EXECUTE BOOSTED PROCEDURE 并未阻止 db.labels 的执行。

要将角色 deniedBoostedProcedureExecutor1 的所有权限列为命令,请使用以下查询

SHOW ROLE deniedBoostedProcedureExecutor1 PRIVILEGES AS COMMANDS
表 48. 结果
命令

"DENY EXECUTE BOOSTED PROCEDURE db.labels ON DBMS TO `deniedBoostedProcedureExecutor1`"

"GRANT EXECUTE PROCEDURE * ON DBMS TO `deniedBoostedProcedureExecutor1`"

行数:2

示例 2. 授予 EXECUTE BOOSTED PROCEDURE 并拒绝 EXECUTE PROCEDURE
GRANT EXECUTE BOOSTED PROCEDURE * ON DBMS TO deniedBoostedProcedureExecutor2
DENY EXECUTE PROCEDURE db.labels ON DBMS TO deniedBoostedProcedureExecutor2

结果角色具有允许提升所有过程权限的权限,但由于缺少或被拒绝的 EXECUTE PROCEDURE 权限而无法执行任何过程。使用以下查询将角色 deniedBoostedProcedureExecutor2 的所有权限列为命令

SHOW ROLE deniedBoostedProcedureExecutor2 PRIVILEGES AS COMMANDS
表 49. 结果
命令

"DENY EXECUTE PROCEDURE db.labels ON DBMS TO `deniedBoostedProcedureExecutor2`"

"GRANT EXECUTE BOOSTED PROCEDURE * ON DBMS TO `deniedBoostedProcedureExecutor2`"

行数:2

示例 3. 授予 EXECUTE BOOSTED PROCEDURE 并拒绝 EXECUTE BOOSTED PROCEDURE
GRANT EXECUTE BOOSTED PROCEDURE * ON DBMS TO deniedBoostedProcedureExecutor3
DENY EXECUTE BOOSTED PROCEDURE db.labels ON DBMS TO deniedBoostedProcedureExecutor3

结果角色具有允许提升除 db.labels 之外的所有过程权限的权限,但由于缺少 EXECUTE PROCEDURE 权限,无法执行任何过程。使用以下查询将角色 deniedBoostedProcedureExecutor3 的所有权限列为命令

SHOW ROLE deniedBoostedProcedureExecutor3 PRIVILEGES AS COMMANDS
表 50. 结果
命令

"DENY EXECUTE BOOSTED PROCEDURE db.labels ON DBMS TO `deniedBoostedProcedureExecutor3`"

"GRANT EXECUTE BOOSTED PROCEDURE * ON DBMS TO `deniedBoostedProcedureExecutor3`"

行数:2

示例 4. 示例 1 到 3 中的权限将如何影响过程的输出?

假设有一个名为 myProc 的过程。

对于具有 EXECUTE PROCEDURE 权限的用户,此过程给出结果 AB;对于具有 EXECUTE BOOSTED PROCEDURE 权限的用户,此过程给出结果 ABC

现在,将示例 1 到 3 中的权限应用于此过程并显示返回的结果。根据示例 1 中的权限,授予 EXECUTE PROCEDURE * 并拒绝 EXECUTE BOOSTED PROCEDURE myProcmyProc 过程返回结果 AB

根据示例 2 中的权限,授予 EXECUTE BOOSTED PROCEDURE * 并拒绝 EXECUTE PROCEDURE myProc,不允许执行 myProc 过程。

根据示例 3 中的权限,授予 EXECUTE BOOSTED PROCEDURE * 并拒绝 EXECUTE BOOSTED PROCEDURE myProc,不允许执行 myProc 过程。

相比之下,当授予

  • EXECUTE PROCEDURE myProcmyProc 过程返回结果 AB

  • EXECUTE BOOSTED PROCEDURE myProc:不允许执行 myProc 过程。

  • EXECUTE PROCEDURE myProcEXECUTE BOOSTED PROCEDURE myProcmyProc 过程返回结果 ABC

EXECUTE ADMIN PROCEDURE 权限

执行管理员过程(使用 @Admin 注解)的能力可以通过 EXECUTE ADMIN PROCEDURES 权限授予。此权限等同于在每个管理员过程上授予EXECUTE PROCEDUREEXECUTE BOOSTED PROCEDURE权限。任何新添加的 admin 过程都会自动包含在此权限中。以下查询显示了如何授予此权限的示例

GRANT EXECUTE ADMIN PROCEDURES ON DBMS TO adminProcedureExecutor

拥有 adminProcedureExecutor 角色的用户可以以提升的权限运行任何 admin 过程。结果角色具有允许执行所有管理员过程的权限。

使用以下查询将角色 adminProcedureExecutor 的所有权限列为命令

SHOW ROLE adminProcedureExecutor PRIVILEGES AS COMMANDS
表 51. 结果
命令

"GRANT EXECUTE ADMIN PROCEDURES ON DBMS TO `adminProcedureExecutor`"

行数:1

为了将其与 EXECUTE PROCEDUREEXECUTE BOOSTED PROCEDURE 权限进行比较,重新审视 myProc 过程,但这次将其视为一个 admin 过程,当允许执行时,它将给出结果 ABC

如果用户仅被授予 EXECUTE PROCEDURE myProcEXECUTE BOOSTED PROCEDURE myProc 权限,则不允许执行 myProc 过程。

但是,对于被授予 EXECUTE ADMIN PROCEDURES 或同时授予 EXECUTE PROCEDURE myProcEXECUTE BOOSTED PROCEDURE myProc 的用户,myProc 过程返回结果 ABC

任何被拒绝的 EXECUTE 权限都会导致不允许执行该过程。在这种情况下,无论是拒绝 EXECUTE PROCEDUREEXECUTE BOOSTED PROCEDURE 还是 EXECUTE ADMIN PROCEDURES 都不重要。

EXECUTE USER DEFINED FUNCTION 权限

执行用户定义函数(UDF)的能力可以通过 EXECUTE USER DEFINED FUNCTION 权限授予。具有此权限的角色被允许执行与名称通配符匹配的 UDF。

EXECUTE USER DEFINED FUNCTION 权限不适用于内置函数,因为内置函数始终可执行。

示例 5. 执行用户定义函数

以下查询显示了如何授予此权限的示例

GRANT EXECUTE USER DEFINED FUNCTION apoc.coll.* ON DBMS TO functionExecutor

或简写形式

GRANT EXECUTE FUNCTION apoc.coll.* ON DBMS TO functionExecutor

拥有 functionExecutor 角色的用户可以运行 apoc.coll 命名空间中的任何 UDF。此处的函数使用用户自己的权限运行。

结果角色具有仅允许执行 apoc.coll 命名空间中 UDF 的权限。使用以下查询将角色 functionExecutor 的所有权限列为命令

SHOW ROLE functionExecutor PRIVILEGES AS COMMANDS
表 52. 结果
命令

"GRANT EXECUTE FUNCTION apoc.coll.* ON DBMS TO `functionExecutor`"

行数:1

为了允许执行所有 UDF 但只排除少数几个,您可以授予 EXECUTE USER DEFINED FUNCTIONS * 并拒绝不需要的函数。

示例 6. 执行用户定义函数

以下查询允许执行所有 UDF,除了以 apoc.any.prop 开头的那些

GRANT EXECUTE USER DEFINED FUNCTIONS * ON DBMS TO deniedFunctionExecutor
DENY EXECUTE USER DEFINED FUNCTION apoc.any.prop* ON DBMS TO deniedFunctionExecutor

或简写形式

GRANT EXECUTE FUNCTIONS * ON DBMS TO deniedFunctionExecutor
DENY EXECUTE FUNCTION apoc.any.prop* ON DBMS TO deniedFunctionExecutor

结果角色具有仅允许执行所有过程(以 apoc.any.prop 开头的除外)的权限。使用以下查询将角色 deniedFunctionExecutor 的所有权限列为命令

SHOW ROLE deniedFunctionExecutor PRIVILEGES AS COMMANDS
表 53. 结果
命令

"DENY EXECUTE FUNCTION apoc.any.prop* ON DBMS TO `deniedFunctionExecutor`"

"GRANT EXECUTE FUNCTION * ON DBMS TO `deniedFunctionExecutor`"

行数:2

apoc.any.propertyapoc.any.properties 被阻止,任何其他以 apoc.any.prop 开头的过程也如此。

EXECUTE BOOSTED USER DEFINED FUNCTION 权限

在执行用户定义函数(UDF)时使用提升权限的能力可以通过 EXECUTE BOOSTED USER DEFINED FUNCTION 权限授予。具有此权限的用户在执行与名称通配符匹配的 UDF 时不会受到其其他权限的限制。EXECUTE BOOSTED USER DEFINED FUNCTION 权限仅影响权限提升,而不影响函数的执行。因此,还需要为这些函数授予 EXECUTE USER DEFINED FUNCTION 权限。执行具有提升权限的函数需要同时具备 EXECUTE USER DEFINED FUNCTIONEXECUTE BOOSTED USER DEFINED FUNCTION 权限。

EXECUTE BOOSTED USER DEFINED FUNCTION 权限不适用于内置函数,因为它们没有提升权限的概念。

示例 7. 执行提升的用户定义函数

以下查询显示了如何授予 EXECUTE BOOSTED USER DEFINED FUNCTION 权限的示例

GRANT EXECUTE USER DEFINED FUNCTION * ON DBMS TO boostedFunctionExecutor
GRANT EXECUTE BOOSTED USER DEFINED FUNCTION apoc.any.properties ON DBMS TO boostedFunctionExecutor

或简写形式

GRANT EXECUTE FUNCTION * ON DBMS TO boostedFunctionExecutor
GRANT EXECUTE BOOSTED FUNCTION apoc.any.properties ON DBMS TO boostedFunctionExecutor

因此,拥有 boostedFunctionExecutor 角色的用户可以以完全权限运行 apoc.any.properties,并查看节点/关系上的所有属性,而不仅仅是用户具有 READ 权限的属性。如果没有 EXECUTE USER DEFINED FUNCTION,则根本无法执行任何 UDF。

结果角色具有允许以提升权限执行 UDF apoc.any.properties 的权限,以及以用户自身权限执行所有其他 UDF 的权限。使用以下查询将角色 boostedFunctionExecutor 的所有权限列为命令

SHOW ROLE boostedFunctionExecutor PRIVILEGES AS COMMANDS
表 54. 结果
命令

"GRANT EXECUTE FUNCTION * ON DBMS TO `boostedFunctionExecutor`"

"GRANT EXECUTE BOOSTED FUNCTION apoc.any.properties ON DBMS TO `boostedFunctionExecutor`"

行数:2

DBMS SETTING 权限

通过 SHOW SETTING 权限可以授予显示配置设置的能力。具有此权限的角色被允许查询与名称通配符匹配的配置设置。

有关语法描述的更多详细信息,请参阅数据库管理命令语法

表 55. 设置权限命令语法
命令 描述
GRANT [IMMUTABLE] SHOW SETTING[S] name-globbing[, ...]
  ON DBMS
  TO role[, ...]

使指定角色能够查询给定配置设置。

以下查询显示了如何授予此权限的示例

GRANT SHOW SETTING server.bolt.* ON DBMS TO configurationViewer

拥有 configurationViewer 角色的用户可以查询 server.bolt 命名空间中的任何设置。

更新后的角色 configurationViewer 具有仅允许查询 server.bolt 命名空间中设置的权限。使用以下查询将角色 configurationViewer 的所有权限列为命令

SHOW ROLE configurationViewer PRIVILEGES AS COMMANDS
表 56. 结果
命令

"GRANT SHOW SETTING server.bolt.* ON DBMS TO `configurationViewer`"

行数:1

要拒绝角色访问特定设置,首先授予 SHOW SETTINGS *,然后拒绝不需要的设置。例如,以下查询允许查询所有设置,除了以 dbms.security 开头的那些

GRANT SHOW SETTINGS * ON DBMS TO deniedConfigurationViewer
DENY SHOW SETTING dbms.security* ON DBMS TO deniedConfigurationViewer

结果角色具有允许查询所有设置(以 dbms.security 开头的除外)的权限。使用以下查询将角色 deniedConfigurationViewer 的所有权限列为命令

SHOW ROLE deniedConfigurationViewer PRIVILEGES AS COMMANDS
表 57. 结果
命令

"DENY SHOW SETTING dbms.security* ON DBMS TO `deniedConfigurationViewer`"

"GRANT SHOW SETTING * ON DBMS TO `deniedConfigurationViewer`"

行数:2

如查询结果所示,对任何以 dbms.security 开头的设置的访问都被阻止,但其余设置仍然可以查询。

授予 ALL DBMS PRIVILEGES

以下权限可以通过一个命令实现

  • 创建、删除、分配、移除和显示角色。

  • 创建、修改、删除、显示和模拟用户。

  • 创建、修改和删除数据库和别名。

  • 启用、修改、重命名、重新分配、解除分配和删除服务器。

  • 显示、分配和移除权限。

  • 以提升的权限执行所有过程。

  • 以提升的权限执行所有用户定义函数。

  • 显示所有配置设置。

有关语法描述的更多详细信息,请参阅数据库管理命令语法

GRANT [IMMUTABLE] ALL [[DBMS] PRIVILEGES]
    ON DBMS
    TO role[, ...]

例如,要授予角色 dbmsManager 以上能力,请使用以下查询

GRANT ALL DBMS PRIVILEGES ON DBMS TO dbmsManager

授予的权限可以通过 SHOW PRIVILEGES 命令查看

SHOW ROLE dbmsManager PRIVILEGES AS COMMANDS
表 58. 结果
命令

"GRANT ALL DBMS PRIVILEGES ON DBMS TO `dbmsManager`"

行数:1

过程、用户定义函数和设置的名称通配符

过程、用户定义函数和设置名称的名称通配符是文件扩展名通配符的简化版本。它只允许两个通配符:*?,分别用于多字符和单字符匹配。在此情况下,* 表示 0 个或更多字符,? 精确匹配一个字符。

名称通配符受限于Cypher 手册 → 命名规则和建议,但有一个例外,即它可能包含点、星号和问号,而无需使用反引号进行转义。

名称通配符的每个由点分隔的部分都可以单独引用。例如,允许使用 mine.`procedureWith%`,但不允许使用 mine.procedure`With%`。另外,请注意,通配符即使在引用时也表现为通配符。例如,使用 `*` 等同于使用 *,因此允许执行所有函数或过程,而不仅仅是名为 * 的过程或函数。

给定以下过程列表

  • mine.public.exampleProcedure

  • mine.public.exampleProcedure1

  • mine.public.exampleProcedure2

  • mine.public.with#Special§Characters

  • mine.private.exampleProcedure

  • mine.private.exampleProcedure1

  • mine.private.exampleProcedure2

  • mine.private.with#Special§Characters

  • your.exampleProcedure

以下示例演示了如何在控制过程访问中使用名称通配符模式。请注意,相同的规则也适用于用户定义函数和设置。

GRANT EXECUTE PROCEDURE * ON DBMS TO globbing1

拥有 globbing1 角色的用户可以运行所有过程。

GRANT EXECUTE PROCEDURE mine.*.exampleProcedure ON DBMS TO globbing2

拥有 globbing2 角色的用户可以运行过程 mine.public.exampleProceduremine.private.exampleProcedure,但不能运行其他过程。

GRANT EXECUTE PROCEDURE mine.*.exampleProcedure? ON DBMS TO globbing3

拥有 globbing3 角色的用户可以运行过程 mine.public.exampleProcedure1mine.private.exampleProcedure1mine.private.exampleProcedure2,但不能运行其他过程。

GRANT EXECUTE PROCEDURE *.exampleProcedure ON DBMS TO globbing4

拥有 globbing4 角色的用户可以运行过程 your.exampleProceduremine.public.exampleProceduremine.private.exampleProcedure,但不能运行其他过程。

GRANT EXECUTE PROCEDURE mine.public.exampleProcedure* ON DBMS TO globbing5

拥有 globbing5 角色的用户可以运行过程 mine.public.exampleProceduremine.public.exampleProcedure1mine.public.exampleProcedure42,但不能运行其他过程。

GRANT EXECUTE PROCEDURE `mine.public.with#*§Characters`, mine.private.`with#Spec???§Characters` ON DBMS TO globbing6

拥有 globbing6 角色的用户可以运行过程 mine.public.with#Special§Charactersmine.private.with#Special§Characters,但不能运行其他过程。

名称通配符可以完全或部分引用。在两种情况下,*? 都被解释为通配符。

© . All rights reserved.