数据库权限AuraDB Business CriticalAuraDB Virtual Dedicated Cloud企业版
管理员可以使用以下 Cypher 命令来管理 Neo4j 数据库的管理权限。
数据库权限命令的组成部分包括:
-
command(命令):
-
GRANT– 向角色授予权限。 -
DENY– 拒绝赋予角色权限。 -
REVOKE– 从角色中移除已授予或拒绝的权限。
-
-
不可变性 (mutability):
-
IMMUTABLE- 当与GRANT或DENY结合使用时,指定该权限在禁用身份验证之前不能被移除。相反,当IMMUTABLE与REVOKE命令结合使用时,它将充当过滤器,仅移除匹配的不可变权限。另请参阅 不可变角色和权限。
-
-
数据库权限 (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[, …]
-
与权限关联的一个或多个角色(以逗号分隔)。
-
|
有关语法描述的更多详细信息,请参阅 数据库管理命令语法。 |
命令 |
|
语法 |
|
描述 |
授予一个或多个角色权限。 |
命令 |
|
语法 |
|
描述 |
拒绝一个或多个角色权限。 |
命令 |
|
语法 |
|
描述 |
从一个或多个角色中撤销已授予的权限。 |
命令 |
|
语法 |
|
描述 |
从一个或多个角色中撤销被拒绝的权限。 |
命令 |
|
语法 |
|
描述 |
从一个或多个角色中撤销已授予或被拒绝的权限。 |
|
|
常见错误(例如拼写错误,或尝试撤销尚未授予或拒绝的权限)会导致通知。在 Cypher 25 中,针对不可能执行的 REVOKE 命令(即用户、角色或数据库不存在的情况)的通知已被错误信息取代。有关通知的详细信息,请参阅 错误与通知状态码 → 通知代码列表。
不同数据库权限之间的层级关系如下图所示。
命令 |
|
语法 |
|
描述 |
授予指定角色访问权限:
|
命令 |
|
语法 |
|
描述 |
授予指定角色启动或停止主数据库、特定数据库或所有数据库的权限。 |
命令 |
|
语法 |
|
描述 |
授予指定角色修改主数据库、特定数据库或所有数据库的所有内容、数据库访问权限或默认语言的权限。仅适用于标准数据库。 |
命令 |
|
语法 |
|
描述 |
授予指定角色修改主数据库、特定数据库或所有数据库的权限。仅适用于复合数据库。 |
命令 |
|
语法 |
|
描述 |
授予指定角色在主数据库、特定数据库或所有数据库上创建、删除或查看索引的权限。 |
命令 |
|
语法 |
|
描述 |
授予指定角色管理主数据库、特定数据库或所有数据库上索引的权限。 |
命令 |
|
语法 |
|
描述 |
授予指定角色在主数据库、特定数据库或所有数据库上创建、删除或查看约束的权限。 |
命令 |
|
语法 |
|
描述 |
授予指定角色管理主数据库、特定数据库或所有数据库上约束的权限。 |
命令 |
|
语法 |
|
描述 |
授予指定角色在主数据库、特定数据库或所有数据库上创建新节点标签的权限。 |
命令 |
|
语法 |
|
描述 |
授予指定角色在主数据库、特定数据库或所有数据库上创建新关系类型的权限。 |
命令 |
|
语法 |
|
描述 |
授予指定角色在主数据库、特定数据库或所有数据库上创建新属性名称的权限。 |
命令 |
|
语法 |
|
描述 |
授予指定角色管理主数据库、特定数据库或所有数据库上的新标签、关系类型和属性名称的权限。 |
命令 |
|
语法 |
|
描述 |
授予指定角色对主数据库、特定数据库或所有数据库以及远程数据库别名的所有权限。 |
命令 |
|
语法 |
|
描述 |
授予指定角色在主数据库、特定数据库或所有数据库中列出和结束所有用户或特定用户的事务和查询的权限。 |
命令 |
|
语法 |
|
描述 |
授予指定角色管理主数据库、特定数据库或所有数据库中所有用户或特定用户的事务和查询的权限。 |
GRANT 和 DENY 数据库权限的语法数据库 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
| command(命令) |
|---|
|
|
行: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
| command(命令) |
|---|
|
|
|
|
|
|
行数: 6 |
|
请注意, |
与 ALTER 数据库相关的权限Cypher 252025.08 引入
ALTER DATABASE、SET DATABASE ACCESS、SET DATABASE DEFAULT LANGUAGE 和 ALTER 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
| command(命令) |
|---|
|
|
|
|
|
|
|
|
行:8 |
|
请注意, |
INDEX MANAGEMENT 权限
可以使用 CREATE INDEX、DROP INDEX 和 SHOW INDEXES 命令创建、删除或列出索引。实现此操作的权限可以通过 GRANT CREATE INDEX、GRANT DROP INDEX 和 GRANT SHOW INDEX 命令授予。执行这三项操作的权限可以通过 GRANT INDEX MANAGEMENT 命令授予。
命令 |
|
语法 |
|
描述 |
使指定角色能够在主数据库、特定数据库或所有数据库中创建、删除或查看索引。 |
命令 |
|
语法 |
|
描述 |
使指定角色能够在主数据库、特定数据库或所有数据库中管理索引。 |
例如,要授予角色 regularUsers 在数据库 neo4j 上创建索引的能力,请使用
GRANT CREATE INDEX ON DATABASE neo4j TO regularUsers
CONSTRAINT MANAGEMENT 权限
可以使用 CREATE CONSTRAINT、DROP CONSTRAINT 和 SHOW CONSTRAINTS 命令创建、删除或列出约束。实现此操作的权限可以通过 GRANT CREATE CONSTRAINT、GRANT DROP CONSTRAINT 和 GRANT SHOW CONSTRAINT 命令授予。执行这三项操作的权限可以通过 GRANT CONSTRAINT MANAGEMENT 命令授予。
命令 |
|
语法 |
|
描述 |
使指定角色能够在主数据库、特定数据库或所有数据库上创建、删除或查看约束。 |
命令 |
|
语法 |
|
描述 |
使指定角色能够在主数据库、特定数据库或所有数据库上管理约束。 |
例如,要授予角色 regularUsers 在数据库 neo4j 上创建约束的能力,请使用
GRANT CREATE CONSTRAINT ON DATABASE neo4j TO regularUsers
NAME MANAGEMENT 权限
创建新标签、关系类型和属性名称的权利不同于创建节点、关系和属性的权利。后者使用数据库 WRITE 权限进行管理,而前者使用针对每种类型特定的 GRANT/DENY CREATE NEW ... 命令进行管理。
命令 |
|
语法 |
|
描述 |
使指定角色能够在主数据库、特定数据库或所有数据库中创建新的节点标签。 |
命令 |
|
语法 |
|
描述 |
使指定角色能够在主数据库、特定数据库或所有数据库中创建新的关系类型。 |
命令 |
|
语法 |
|
描述 |
使指定角色能够在主数据库、特定数据库或所有数据库中创建新的属性名称。 |
命令 |
|
语法 |
|
描述 |
使指定角色能够在主数据库、特定数据库或所有数据库中创建新标签、关系类型和属性名称。 |
|
当不使用 |
例如,要授予角色 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[, ...]
|
请注意,启动、停止和修改所有数据库的权限以及事务管理权限不包含在 |
例如,将上述功能在数据库 neo4j 上授予角色 databaseAdminUsers,可使用以下查询。
GRANT ALL DATABASE PRIVILEGES ON DATABASE neo4j TO databaseAdminUsers
可以使用 SHOW PRIVILEGES 命令查看已授予的权限:
SHOW ROLE databaseAdminUsers PRIVILEGES AS COMMANDS
| command(命令) |
|---|
|
行:1 |
授予 TRANSACTION MANAGEMENT 权限
运行 SHOW TRANSACTIONS、TERMINATE TRANSACTIONS 命令以及已弃用的程序 dbms.listTransactions、dbms.listQueries、dbms.killQuery、dbms.killQueries、dbms.killTransaction 和 dbms.killTransactions 的权利,现在通过 SHOW TRANSACTION 和 TERMINATE TRANSACTION 权限进行管理。
命令 |
|
语法 |
|
描述 |
使指定角色能够在主数据库、特定数据库或所有数据库中列出用户或所有用户的事务和查询。 |
命令 |
|
语法 |
|
描述 |
使指定角色能够在主数据库、特定数据库或所有数据库中结束运行中用户或所有用户的事务和查询。 |
命令 |
|
语法 |
|
描述 |
使指定角色能够在主数据库、特定数据库或所有数据库中管理用户或所有用户的事务和查询。 |
|
请注意, |
例如,要授予角色 regularUsers 在数据库 neo4j 上列出用户 jake 的事务的能力,请使用
GRANT SHOW TRANSACTION (jake) ON DATABASE neo4j TO regularUsers