数据库权限

管理员可以使用以下 Cypher 命令来管理 Neo4j 数据库的管理权限。

数据库权限命令的组成部分包括:

  • command(命令):

    • GRANT – 向角色授予权限。

    • DENY – 拒绝赋予角色权限。

    • REVOKE – 从角色中移除已授予或拒绝的权限。

  • 不可变性 (mutability):

    • IMMUTABLE - 当与 GRANTDENY 结合使用时,指定该权限在禁用身份验证之前不能被移除。相反,当 IMMUTABLEREVOKE 命令结合使用时,它将充当过滤器,仅移除匹配的不可变权限。另请参阅 不可变角色和权限

  • 数据库权限 (database-privilege)

    • ACCESS - 允许访问特定数据库或远程数据库别名。

    • START - 允许启动指定的数据库。

    • STOP - 允许停止指定的数据库。

    • CREATE INDEX - 允许在指定数据库上创建索引。

    • DROP INDEX - 允许在指定数据库上删除索引。

    • SHOW INDEX - 允许列出指定数据库上的索引。

    • INDEX [MANAGEMENT] - 允许在指定数据库上创建、删除和列出索引。

    • CREATE CONSTRAINT - 允许在指定数据库上创建约束。

    • DROP CONSTRAINT - 允许在指定数据库上删除约束。

    • SHOW CONSTRAINT - 允许列出指定数据库上的约束。

    • CONSTRAINT [MANAGEMENT] - 允许在指定数据库上创建、删除和列出约束。

    • CREATE NEW [NODE] LABEL - 允许创建新的节点标签。

    • CREATE NEW [RELATIONSHIP] TYPE - 允许创建新的关系类型。

    • CREATE NEW [PROPERTY] NAME - 允许创建新的属性名称,以便节点和关系可以使用这些名称分配属性。

    • NAME [MANAGEMENT] - 允许所有名称管理功能:节点标签、关系类型和属性名称。

    • ALL [[DATABASE] PRIVILEGES] - 允许对指定数据库或远程数据库别名进行访问、索引、约束和名称管理。

    • SHOW TRANSACTION - 允许列出指定用户在指定数据库上的事务和查询。

    • TERMINATE TRANSACTION - 允许终止指定用户在指定数据库上的事务和查询。

    • TRANSACTION [MANAGEMENT] - 允许列出和终止指定用户在指定数据库上的事务和查询。

  • 名称 (name)

    • 与权限关联的数据库。

      如果您删除一个数据库并创建一个同名的新数据库,新数据库将不会拥有之前分配给已删除数据库的权限。

    • name 组件可以是 *,表示所有数据库。在此命令执行后创建的数据库也将关联这些权限。

    • 命令中的 DATABASE[S] name 部分可以替换为 HOME DATABASE。这指的是为用户配置的主数据库,如果用户没有配置主数据库,则指的是默认数据库。如果在此命令执行后,用户的用户主数据库因任何原因发生变化,新主数据库将关联这些权限。这非常强大,因为它允许只需更改用户的主数据库即可将权限从一个数据库切换到另一个数据库。

  • role[, …​]

    • 与权限关联的一个或多个角色(以逗号分隔)。

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

表 1. GRANT ON DATABASE 权限语法

命令

GRANT ... ON ... TO ...

语法

GRANT [IMMUTABLE] database-privilege ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } } TO role[, ...]

描述

授予一个或多个角色权限。

表 2. DENY ON DATABASE 权限语法

命令

DENY ... ON ... TO ...

语法

DENY [IMMUTABLE] database-privilege ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } } TO role[, ...]

描述

拒绝一个或多个角色权限。

表 3. REVOKE GRANT ON DATABASE 权限语法

命令

REVOKE GRANT ... ON ... FROM ...

语法

REVOKE [IMMUTABLE] GRANT database-privilege ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } } FROM role[, ...]

描述

从一个或多个角色中撤销已授予的权限。

表 4. REVOKE DENY ON DATABASE 权限语法

命令

REVOKE DENY ... ON ... FROM ...

语法

REVOKE [IMMUTABLE] DENY database-privilege ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } } FROM role[, ...]

描述

从一个或多个角色中撤销被拒绝的权限。

表 5. REVOKE ON DATABASE 权限语法

命令

REVOKE ... ON ... FROM ...

语法

REVOKE [IMMUTABLE] database-privilege ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } } FROM role[, ...]

描述

从一个或多个角色中撤销已授予或被拒绝的权限。

DENY不会擦除已授予的权限。如果您想移除权限,请使用 REVOKE

常见错误(例如拼写错误,或尝试撤销尚未授予或拒绝的权限)会导致通知。在 Cypher 25 中,针对不可能执行的 REVOKE 命令(即用户、角色或数据库不存在的情况)的通知已被错误信息取代。有关通知的详细信息,请参阅 错误与通知状态码 → 通知代码列表

不同数据库权限之间的层级关系如下图所示。

privileges hierarchy database
图 1. 数据库权限层级
表 6. GRANT ACCESS 权限语法

命令

GRANT ACCESS

语法

GRANT [IMMUTABLE] ACCESS
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

授予指定角色访问权限:

  • 主数据库。

  • 特定数据库或远程数据库别名。

  • 所有数据库和远程数据库别名。

表 7. GRANT START | STOP 权限语法

命令

GRANT { START | STOP }

语法

GRANT [IMMUTABLE] { START | STOP }
  ON { HOME DATABASE | DATABASE[S] {* | name[, ...] } }
  TO role[, ...]

描述

授予指定角色启动或停止主数据库、特定数据库或所有数据库的权限。

表 8. GRANT ALTER DATABASE | SET DATABASE ACCESS | SET DATABASE DEFAULT LANGUAGE 权限语法

命令

GRANT { ALTER DATABASE | SET DATABASE ACCESS | SET DATABASE DEFAULT LANGUAGE }

语法

GRANT [IMMUTABLE] { ALTER DATABASE | SET DATABASE ACCESS | SET DATABASE DEFAULT LANGUAGE }
  ON { HOME DATABASE | DATABASE[S] {* | name[, ...] } }
  TO role[, ...]

描述

授予指定角色修改主数据库、特定数据库或所有数据库的所有内容、数据库访问权限或默认语言的权限。仅适用于标准数据库。

表 9. GRANT ALTER COMPOSITE DATABASE 权限语法

命令

GRANT { ALTER COMPOSITE DATABASE }

语法

GRANT [IMMUTABLE] { ALTER COMPOSITE DATABASE }
  ON { HOME DATABASE | DATABASE[S] {* | name[, ...] } }
  TO role[, ...]

描述

授予指定角色修改主数据库、特定数据库或所有数据库的权限。仅适用于复合数据库。

表 10. GRANT CREATE | DROP | SHOW INDEX 权限语法

命令

GRANT { CREATE | DROP | SHOW } INDEX

语法

GRANT [IMMUTABLE] { CREATE | DROP | SHOW } INDEX[ES]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

授予指定角色在主数据库、特定数据库或所有数据库上创建、删除或查看索引的权限。

表 11. GRANT INDEX 权限语法

命令

GRANT INDEX

语法

GRANT [IMMUTABLE] INDEX[ES] [MANAGEMENT]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

授予指定角色管理主数据库、特定数据库或所有数据库上索引的权限。

表 12. GRANT CREATE | DROP | SHOW CONSTRAINT 权限语法

命令

GRANT { CREATE | DROP | SHOW } CONSTRAINT

语法

GRANT [IMMUTABLE] { CREATE | DROP | SHOW } CONSTRAINT[S]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

授予指定角色在主数据库、特定数据库或所有数据库上创建、删除或查看约束的权限。

表 13. GRANT CONSTRAINT 权限语法

命令

GRANT CONSTRAINT

语法

GRANT [IMMUTABLE] CONSTRAINT[S] [MANAGEMENT]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

授予指定角色管理主数据库、特定数据库或所有数据库上约束的权限。

表 14. GRANT CREATE NEW LABEL 权限语法

命令

GRANT CREATE NEW LABEL

语法

GRANT [IMMUTABLE] CREATE NEW [NODE] LABEL[S]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

授予指定角色在主数据库、特定数据库或所有数据库上创建新节点标签的权限。

表 15. GRANT CREATE NEW TYPE 权限语法

命令

GRANT CREATE NEW TYPE

语法

GRANT [IMMUTABLE] CREATE NEW [RELATIONSHIP] TYPE[S]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

授予指定角色在主数据库、特定数据库或所有数据库上创建新关系类型的权限。

表 16. GRANT CREATE NEW NAME 权限语法

命令

GRANT CREATE NEW NAME

语法

GRANT [IMMUTABLE] CREATE NEW [PROPERTY] NAME[S]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

授予指定角色在主数据库、特定数据库或所有数据库上创建新属性名称的权限。

表 17. GRANT NAME 权限语法

命令

GRANT NAME

语法

GRANT [IMMUTABLE] NAME [MANAGEMENT]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

授予指定角色管理主数据库、特定数据库或所有数据库上的新标签、关系类型和属性名称的权限。

表 18. GRANT ALL 权限语法

命令

GRANT ALL

语法

GRANT [IMMUTABLE] ALL [[DATABASE] PRIVILEGES]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

授予指定角色对主数据库、特定数据库或所有数据库以及远程数据库别名的所有权限。

表 19. GRANT { SHOW \| TERMINATE } TRANSACTION 权限语法

命令

GRANT { SHOW | TERMINATE } TRANSACTION

语法

GRANT [IMMUTABLE] { SHOW | TERMINATE } TRANSACTION[S] [( { * | user[, ...] } )]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

授予指定角色在主数据库、特定数据库或所有数据库中列出和结束所有用户或特定用户的事务和查询的权限。

表 20. GRANT TRANSACTION 权限语法

命令

GRANT TRANSACTION

语法

GRANT [IMMUTABLE] TRANSACTION [MANAGEMENT] [( { * | user[, ...] } )]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

授予指定角色管理主数据库、特定数据库或所有数据库中所有用户或特定用户的事务和查询的权限。

privileges grant and deny syntax database privileges
图 2. GRANTDENY 数据库权限的语法

数据库 ACCESS 权限

ACCESS 权限允许用户连接到数据库或远程数据库别名。拥有 ACCESS 权限,您可以运行计算,例如 RETURN 2 * 5 AS answer,或调用函数,例如 RETURN timestamp() AS time

GRANT [IMMUTABLE] ACCESS
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要授予角色 regularUsers 访问数据库 neo4j 的能力,请使用

GRANT ACCESS ON DATABASE neo4j TO regularUsers

ACCESS 权限也可以被拒绝:

DENY [IMMUTABLE] ACCESS
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要拒绝角色 regularUsers 访问远程数据库别名 remote-db 的能力,请使用

DENY ACCESS ON DATABASE `remote-db` TO regularUsers

可以使用 SHOW PRIVILEGES 命令查看已授予的权限:

SHOW ROLE regularUsers PRIVILEGES AS COMMANDS
表 21. 结果
command(命令)

"DENY ACCESS ON DATABASE remote-db TO `regularUsers`"

"GRANT ACCESS ON DATABASE neo4j TO `regularUsers`"

行:2

数据库 START/STOP 权限

START 权限可用于启用启动数据库的能力:

GRANT [IMMUTABLE] START
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要授予角色 regularUsers 启动数据库 neo4j 的能力,请使用

GRANT START ON DATABASE neo4j TO regularUsers

START 权限也可以被拒绝:

DENY [IMMUTABLE] START
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要拒绝角色 regularUsers 启动数据库 system 的能力,请使用

DENY START ON DATABASE system TO regularUsers

STOP 权限可用于启用停止数据库的能力:

GRANT [IMMUTABLE] STOP
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要授予角色 regularUsers 停止数据库 neo4j 的能力,请使用

GRANT STOP ON DATABASE neo4j TO regularUsers

STOP 权限也可以被拒绝:

DENY [IMMUTABLE] STOP
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要拒绝角色 regularUsers 停止数据库 system 的能力,请使用

DENY STOP ON DATABASE system TO regularUsers

可以使用 SHOW PRIVILEGES 命令查看已授予的权限:

SHOW ROLE regularUsers PRIVILEGES AS COMMANDS
表 22. 结果
command(命令)

"DENY ACCESS ON DATABASE remote-db TO `regularUsers`"

"DENY START ON DATABASE system TO `regularUsers`"

"DENY STOP ON DATABASE system TO `regularUsers`"

"GRANT ACCESS ON DATABASE neo4j TO `regularUsers`"

"GRANT START ON DATABASE neo4j TO `regularUsers`"

"GRANT STOP ON DATABASE neo4j TO `regularUsers`"

行数: 6

请注意,STARTSTOP 权限不包含在 ALL DATABASE PRIVILEGES 中。

与 ALTER 数据库相关的权限

ALTER DATABASESET DATABASE ACCESSSET DATABASE DEFAULT LANGUAGEALTER COMPOSITE DATABASE 权限既可以作为数据库权限授予,也可以作为 DBMS 权限授予。DBMS 权限等同于授予所有数据库(DATABASE *)的数据库权限。有关 DBMS 权限版本的更多信息,请参阅 DBMS DATABASE MANAGEMENT 权限

ALTER DATABASE 权限用于启用修改标准数据库的能力:

GRANT [IMMUTABLE] ALTER DATABASE
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要授予角色 alterDbUsers 修改数据库 neo4j 的能力,请使用

GRANT ALTER DATABASE ON DATABASE neo4j TO alterDbUsers

ALTER DATABASE 权限也可以被拒绝:

DENY [IMMUTABLE] ALTER DATABASE
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要拒绝角色 alterDbUsers 修改数据库 system 的能力,请使用

DENY ALTER DATABASE ON DATABASE system TO alterDbUsers

SET DATABASE ACCESS 权限可用于启用修改标准数据库的访问权限(只读或读写)的能力:

GRANT [IMMUTABLE] SET DATABASE ACCESS
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

这不应与允许用户访问数据库的 ACCESS 权限相混淆。

例如,要授予角色 alterDbUsers 修改数据库 neo4j 访问权限的能力,请使用

GRANT SET DATABASE ACCESS ON DATABASE neo4j TO alterDbUsers

SET DATABASE ACCESS 权限也可以被拒绝:

DENY [IMMUTABLE] SET DATABASE ACCESS
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要拒绝角色 alterDbUsers 修改数据库 neo4j 访问权限的能力,请使用

DENY SET DATABASE ACCESS ON DATABASE neo4j TO alterDbUsers

SET DATABASE DEFAULT LANGUAGE 权限可用于启用修改标准数据库默认语言的能力:

GRANT [IMMUTABLE] SET DATABASE DEFAULT LANGUAGE
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要授予角色 alterDbUsers 修改数据库 neo4j 的默认 Cypher 语言版本的能力,请使用

GRANT SET DATABASE DEFAULT LANGUAGE ON DATABASE neo4j TO alterDbUsers

SET DATABASE DEFAULT LANGUAGE 权限也可以被拒绝:

DENY [IMMUTABLE] SET DATABASE DEFAULT LANGUAGE
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要拒绝角色 alterDbUsers 修改数据库 system 默认语言的能力,请使用

DENY SET DATABASE DEFAULT LANGUAGE ON DATABASE system TO alterDbUsers

ALTER COMPOSITE DATABASE 权限可用于启用修改复合数据库的能力:

GRANT [IMMUTABLE] ALTER COMPOSITE DATABASE
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要授予角色 alterDbUsers 修改主数据库(只要它是复合数据库)的能力,请使用

GRANT ALTER COMPOSITE DATABASE ON HOME DATABASE TO alterDbUsers

ALTER COMPOSITE DATABASE 权限也可以被拒绝:

DENY [IMMUTABLE] ALTER COMPOSITE DATABASE
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

例如,要拒绝角色 alterDbUsers 修改复合数据库 composite 的能力,请使用

DENY ALTER COMPOSITE DATABASE ON DATABASE composite TO alterDbUsers

可以使用 SHOW PRIVILEGES 命令查看已授予的权限:

SHOW ROLE alterDbUsers PRIVILEGES AS COMMANDS
表 23. 结果
command(命令)

"DENY ALTER COMPOSITE DATABASE ON DATABASE composite TO `alterDbUsers`"

"DENY ALTER DATABASE ON DATABASE system TO `alterDbUsers`"

"DENY SET DATABASE ACCESS ON DATABASE neo4j TO `alterDbUsers`"

"DENY SET DATABASE DEFAULT LANGUAGE ON DATABASE system TO `alterDbUsers`"

"GRANT ALTER COMPOSITE DATABASE ON HOME DATABASE TO `alterDbUsers`"

"GRANT ALTER DATABASE ON DATABASE neo4j TO `alterDbUsers`"

"GRANT SET DATABASE ACCESS ON DATABASE neo4j TO `alterDbUsers`"

"GRANT SET DATABASE DEFAULT LANGUAGE ON DATABASE neo4j TO `alterDbUsers`"

行:8

请注意,ALTER DATABASESET DATABASE ACCESSSET DATABASE DEFAULT LANGUAGEALTER COMPOSITE DATABASE 权限不包含在 ALL DATABASE PRIVILEGES 中。

INDEX MANAGEMENT 权限

可以使用 CREATE INDEXDROP INDEXSHOW INDEXES 命令创建、删除或列出索引。实现此操作的权限可以通过 GRANT CREATE INDEXGRANT DROP INDEXGRANT SHOW INDEX 命令授予。执行这三项操作的权限可以通过 GRANT INDEX MANAGEMENT 命令授予。

表 24. 索引管理权限语法

命令

GRANT { CREATE | DROP | SHOW } INDEX

语法

GRANT [IMMUTABLE] { CREATE | DROP | SHOW } INDEX[ES]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

使指定角色能够在主数据库、特定数据库或所有数据库中创建、删除或查看索引。

表 25. 索引管理权限语法

命令

GRANT INDEX

语法

GRANT [IMMUTABLE] INDEX[ES] [MANAGEMENT]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

使指定角色能够在主数据库、特定数据库或所有数据库中管理索引。

例如,要授予角色 regularUsers 在数据库 neo4j 上创建索引的能力,请使用

GRANT CREATE INDEX ON DATABASE neo4j TO regularUsers

CONSTRAINT MANAGEMENT 权限

可以使用 CREATE CONSTRAINTDROP CONSTRAINTSHOW CONSTRAINTS 命令创建、删除或列出约束。实现此操作的权限可以通过 GRANT CREATE CONSTRAINTGRANT DROP CONSTRAINTGRANT SHOW CONSTRAINT 命令授予。执行这三项操作的权限可以通过 GRANT CONSTRAINT MANAGEMENT 命令授予。

表 26. 约束管理权限语法

命令

GRANT { CREATE | DROP | SHOW } CONSTRAINT

语法

GRANT [IMMUTABLE] { CREATE | DROP | SHOW } CONSTRAINT[S]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

使指定角色能够在主数据库、特定数据库或所有数据库上创建、删除或查看约束。

表 27. 约束管理权限语法

命令

GRANT CONSTRAINT

语法

GRANT [IMMUTABLE] CONSTRAINT[S] [MANAGEMENT]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

使指定角色能够在主数据库、特定数据库或所有数据库上管理约束。

例如,要授予角色 regularUsers 在数据库 neo4j 上创建约束的能力,请使用

GRANT CREATE CONSTRAINT ON DATABASE neo4j TO regularUsers

NAME MANAGEMENT 权限

创建新标签、关系类型和属性名称的权利不同于创建节点、关系和属性的权利。后者使用数据库 WRITE 权限进行管理,而前者使用针对每种类型特定的 GRANT/DENY CREATE NEW ... 命令进行管理。

表 28. 节点标签管理权限语法

命令

GRANT CREATE NEW LABEL

语法

GRANT [IMMUTABLE] CREATE NEW [NODE] LABEL[S]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

使指定角色能够在主数据库、特定数据库或所有数据库中创建新的节点标签。

表 29. 关系类型管理权限语法

命令

GRANT CREATE NEW TYPE

语法

GRANT [IMMUTABLE] CREATE NEW [RELATIONSHIP] TYPE[S]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

使指定角色能够在主数据库、特定数据库或所有数据库中创建新的关系类型。

表 30. 属性名称管理权限语法

命令

GRANT CREATE NEW NAME

语法

GRANT [IMMUTABLE] CREATE NEW [PROPERTY] NAME[S]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

使指定角色能够在主数据库、特定数据库或所有数据库中创建新的属性名称。

表 31. 节点标签、关系类型和属性名称权限管理语法

命令

GRANT NAME

语法

GRANT [IMMUTABLE] NAME [MANAGEMENT]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

使指定角色能够在主数据库、特定数据库或所有数据库中创建新标签、关系类型和属性名称。

当不使用 AS COMMANDS 时,SHOW PRIVILEGES 命令会将 NAME MANAGEMENT 权限作为操作 token 返回。

例如,要授予角色 regularUsers 在数据库 neo4j 上创建节点或关系的新属性的能力,请使用

GRANT CREATE NEW PROPERTY NAME ON DATABASE neo4j TO regularUsers

授予 ALL DATABASE PRIVILEGES

访问数据库、创建和删除索引与约束、以及创建新标签、关系类型或属性名称的权利可以通过单个命令实现。

GRANT [IMMUTABLE] ALL [[DATABASE] PRIVILEGES]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

请注意,启动、停止和修改所有数据库的权限以及事务管理权限不包含在 ALL DATABASE PRIVILEGES 授权中。这些权限与管理员相关,而其他数据库权限则供域开发人员和应用程序开发人员使用。

例如,将上述功能在数据库 neo4j 上授予角色 databaseAdminUsers,可使用以下查询。

GRANT ALL DATABASE PRIVILEGES ON DATABASE neo4j TO databaseAdminUsers

可以使用 SHOW PRIVILEGES 命令查看已授予的权限:

SHOW ROLE databaseAdminUsers PRIVILEGES AS COMMANDS
表 32. 结果
command(命令)

"GRANT ALL DATABASE PRIVILEGES ON DATABASE neo4j TO `databaseAdminUsers`"

行:1

授予 TRANSACTION MANAGEMENT 权限

运行 SHOW TRANSACTIONSTERMINATE TRANSACTIONS 命令以及已弃用的程序 dbms.listTransactionsdbms.listQueriesdbms.killQuerydbms.killQueriesdbms.killTransactiondbms.killTransactions 的权利,现在通过 SHOW TRANSACTIONTERMINATE TRANSACTION 权限进行管理。

表 33. GRANT SHOW TRANSACTION 权限语法

命令

GRANT SHOW TRANSACTION

语法

GRANT [IMMUTABLE] SHOW TRANSACTION[S] [( { * | user[, ...] } )]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

使指定角色能够在主数据库、特定数据库或所有数据库中列出用户或所有用户的事务和查询。

表 34. GRANT TERMINATE TRANSACTION 权限语法

命令

GRANT TERMINATE TRANSACTION

语法

GRANT [IMMUTABLE] TERMINATE TRANSACTION[S] [( { * | user[, ...] } )]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

使指定角色能够在主数据库、特定数据库或所有数据库中结束运行中用户或所有用户的事务和查询。

表 35. GRANT TRANSACTION 权限语法

命令

GRANT TRANSACTION

语法

GRANT [IMMUTABLE] TRANSACTION [MANAGEMENT] [( { * | user[, ...] } )]
  ON { HOME DATABASE | DATABASE[S] { * | name[, ...] } }
  TO role[, ...]

描述

使指定角色能够在主数据库、特定数据库或所有数据库中管理用户或所有用户的事务和查询。

请注意,TRANSACTION MANAGEMENT 权限不包含在 ALL DATABASE PRIVILEGES 中。

例如,要授予角色 regularUsers 在数据库 neo4j 上列出用户 jake 的事务的能力,请使用

GRANT SHOW TRANSACTION (jake) ON DATABASE neo4j TO regularUsers