用户管理
# 创建一个新用户和密码。此密码必须在第一次登录时更改。
create user alice set password $password
# 为用户设置新密码。(该用户下次登录时无需更改次密码)
alter user alice set password $password change not required
# 如果用指定用户存在,则强制该用户在下次登录时更改其密码。
alter user alice if exists set password change required
# ※更改用户状态为暂停。(使用 set status active 重新激活用户)
alter user alice set status suspended
# ※将用户家数据库改为 otherDb。(使用remove home database 取消设置用户的主数据库并回退到默认数据库)
alter user alice set home database otherDb
# 更改登录用户的密码。(用户下次登录时无需更改此密码。)
alter current user set password from $oldpassword to $newpassword
# 列出当前登录的用户、他们的状态、角色以及他们是否需要更改密码.(★) 状态和角色仅限企业版。
show current user
# 列出系统中的所有用户、他们的状态、角色以及他们是否需要更改密码。(★) 状态和角色仅限企业版。
show users
# 列出系统中的用户,按名称和状态过滤,并根据是否暂停进一步细化。(★) 状态仅为企业版。
SHOW USERS
YIELD user, suspended
WHERE suspended = true
# 将用户重命名
rename user alice to alice_delete
# 删除用户
drop user alice_delete
角色管理
# 创建角色
create role my_role
# 创建一个名为 my_second_role 的角色(除非它已经存在)作为现有的my_role 的副本
create role my_second_role if not exists as copy of my_role
# 将名为 my_second_role 的角色重命名为 my_other_role
rename role my_second_role to my_other_role
# 为用户分配角色
grant role my_role,my_other_role to alice
# 从用户中删除指定的角色
revoke role my_other_role from alice
# 列出系统中所有的角色。
show roles
# 列出角色,按角色名称过滤,并根据名称是否包含“我的”进一步细化。
SHOW ROLES
YIELD role
WHERE role CONTAINS 'my'
# 列出分配给系统中至少一个用户的所有角色,以及分配给这些角色的用户。
SHOW POPULATED ROLES WITH USERS
# 删除角色
drop role my_role
图graph 读权限(♥)
# 向角色授予对所有节点和所有图的遍历权限。
GRANT TRAVERSE ON GRAPH * NODES * TO my_role
# 拒绝对角色的指定属性、指定图中具有指定类型的所有关系的读取权限。
DENY READ {prop} ON GRAPH foo RELATIONSHIP Type TO my_role
# 将所有属性的读取权限和主图中的遍历权限授予角色。在这里,这两种权限都适用于图中具有指定标签/类型的所有节点和关系。
GRANT MATCH {*} ON HOME GRAPH ELEMENTS Label TO my_role
图graph 写权限(♥)
# 向角色授予对所有图中具有指定标签的所有节点的创建权限。
GRANT CREATE ON GRAPH * NODES Label TO my_role
# 拒绝对角色的指定图中的所有节点和关系的删除权限。
DENY DELETE ON GRAPH neo4j TO my_role
# 将所有图上指定标签的 set label 权限撤消给角色。
REVOKE SET LABEL Label ON GRAPH * FROM my_role
# 将指定图上所有标签的删除标签权限授予角色。
GRANT REMOVE LABEL * ON GRAPH foo TO my_role
# 拒绝将指定属性、指定图中具有指定类型的所有关系的属性权限设置为角色。
DENY SET PROPERTY {prop} ON GRAPH foo RELATIONSHIPS Type TO my_role
# 向角色授予对所有属性、所有图中具有指定标签的所有节点的合并权限。
GRANT MERGE {*} ON GRAPH * NODES Label TO my_role
# 撤销角色对所有图的写入权限。
REVOKE WRITE ON GRAPH * FROM my_role
# 拒绝角色对指定图的所有图特权特权。
DENY ALL GRAPH PRIVILEGES ON GRAPH foo TO my_role
展示特权(♥)
# 将系统中的所有权限列为 Cypher 命令。
show privileges as commands
# 列出系统中的所有权限以及分配给它们的角色。
SHOW PRIVILEGES
# 列出有关权限的信息,按角色、操作和访问进行过滤,并按角色名称进一步细化。
SHOW PRIVILEGES
YIELD role, action, access
WHERE role = 'my_role'
# 列出分配给角色的所有权限作为 Cypher 命令。
SHOW ROLE my_role PRIVILEGES AS COMMANDS
# 列出分配给多个角色中的每个角色的所有权限作为 Cypher 命令。
SHOW ROLE my_role, my_second_role PRIVILEGES AS COMMANDS
# 列出用户的所有权限,以及他们作为 Cypher 命令分配给的角色。
SHOW USER alice PRIVILEGES AS COMMANDS
# 列出当前登录用户的所有权限,以及他们作为 Cypher 命令分配的角色。
SHOW USER PRIVILEGES AS COMMANDS
数据库权限(♥)
# 向角色授予访问和运行针对所有数据库的查询的权限。
GRANT ACCESS ON DATABASE * TO my_role
# 向角色授予启动所有数据库的权限。
GRANT START ON DATABASE * TO my_role
# 向角色授予停止所有数据库的权限。
GRANT STOP ON DATABASE * TO my_role
# 向角色授予指定数据库上创建索引的权限。
GRANT CREATE INDEX ON DATABASE foo TO my_role
# 向角色授予删除指定数据库上的索引的权限。
GRANT DROP INDEX ON DATABASE foo TO my_role
# 授予权限以向角色显示所有数据库上的索引。
GRANT SHOW INDEX ON DATABASE * TO my_role
# 拒绝为角色创建和删除指定数据库上的索引的特权。
DENY INDEX MANAGEMENT ON DATABASE bar TO my_role
# 向角色授予在所有数据库上创建约束的权限。
GRANT CREATE CONSTRAINT ON DATABASE * TO my_role
# 拒绝将所有数据库上的约束删除到某个角色的权限。
DENY DROP CONSTRAINT ON DATABASE * TO my_role
# 拒绝特权以向角色显示对指定数据库的约束。
DENY SHOW CONSTRAINT ON DATABASE foo TO my_role
# 撤消授予和拒绝的权限以从角色创建和删除对所有数据库的约束。
REVOKE CONSTRAINT ON DATABASE * FROM my_role
# 向角色授予在所有数据库上创建新标签的权限。
GRANT CREATE NEW LABELS ON DATABASE * TO my_role
# 拒绝在指定数据库上为角色创建新关系类型的特权。
DENY CREATE NEW TYPES ON DATABASE foo TO my_role
# 从角色撤消在指定数据库上创建新属性名称的授予权限。
REVOKE GRANT CREATE NEW PROPERTY NAMES ON DATABASE bar FROM my_role
# 向角色授予在主数据库上创建标签、关系类型和属性名称的权限。
GRANT NAME MANAGEMENT ON HOME DATABASE TO my_role
# 向角色授予访问、创建和删除索引和约束、在指定数据库上创建新标签、类型和属性名称的权限。
GRANT ALL ON DATABASE baz TO my_role
# 授予权限以列出来自指定数据库上所有用户的事务和查询给角色。
GRANT SHOW TRANSACTION (*) ON DATABASE foo TO my_role
# 拒绝从所有数据库上的 user1 和 user2 到角色终止事务和查询的特权。
DENY TERMINATE TRANSACTION (user1, user2) ON DATABASES * TO my_role
# 撤消授予的权限,以从角色中列出和终止主数据库上所有用户的事务和查询。
REVOKE GRANT TRANSACTION MANAGEMENT ON HOME DATABASE FROM my_role
角色管理权限(♥)
GRANT CREATE ROLE ON DBMS TO my_role # 授予角色创建角色的权限。
GRANT RENAME ROLE ON DBMS TO my_role # 授予将角色重命名为角色的权限。
GRANT DROP ROLE ON DBMS TO my_role # 授予角色删除角色的权限。
DENY ASSIGN ROLE ON DBMS TO my_role # 拒绝为用户分配角色的权限。
DENY REMOVE ROLE ON DBMS TO my_role # 拒绝将角色从用户移除到角色的权限。
REVOKE DENY SHOW ROLE ON DBMS FROM my_role # 撤销被拒绝的权限以显示角色中的角色。
GRANT ROLE MANAGEMENT ON DBMS TO my_role # 授予角色管理角色的所有权限。
用户管理权限(♥)
GRANT CREATE USER ON DBMS TO my_role # 授予为角色创建用户的权限。
GRANT RENAME USER ON DBMS TO my_role # 授予将用户重命名为角色的权限。
DENY ALTER USER ON DBMS TO my_role # 拒绝将用户更改为角色的权限。
REVOKE SET PASSWORDS ON DBMS FROM my_role # 撤销授予和拒绝的权限以更改角色的用户密码。
REVOKE GRANT SET USER STATUS ON DBMS FROM my_role # 撤消授予的权限以从角色更改用户的帐户状态。
GRANT SET USER HOME DATABASE ON DBMS TO my_role # 将权限更改用户的主数据库授予角色。
GRANT DROP USER ON DBMS TO my_role # 授予角色删除用户的权限。
REVOKE DENY SHOW USER ON DBMS FROM my_role # 撤销被拒绝的权限以显示角色中的用户。
GRANT USER MANAGEMENT ON DBMS TO my_role # 将管理用户的所有权限授予角色。
数据库管理权限(♥)
GRANT CREATE DATABASE ON DBMS TO my_role # 授予角色创建数据库的权限。
REVOKE DENY DROP DATABASE ON DBMS FROM my_role # 撤销被拒绝的权限以从角色中删除数据库。
DENY DATABASE MANAGEMENT ON DBMS TO my_role # 拒绝一个角色管理数据库的所有权限。
权限管理权限(♥)
GRANT SHOW PRIVILEGE ON DBMS TO my_role # 授予权限以向角色显示权限。
DENY ASSIGN PRIVILEGE ON DBMS TO my_role # 拒绝将权限分配给角色的权限。
REVOKE GRANT REMOVE PRIVILEGE ON DBMS FROM my_role # 撤消授予的权限以从角色的角色中删除权限。
REVOKE PRIVILEGE MANAGEMENT ON DBMS FROM my_role # 从角色撤销所有授予和拒绝的管理权限的权限。
DBMS 权限
# 授予对角色执行所有角色管理、用户管理、数据库管理和权限管理的权限。
GRANT ALL ON DBMS TO my_role
★注意
(♥) Neo4j 企业版提供的功能。
附录
- 知识借鉴:Neo4j 备忘单_w3cschool