管理用户

可以使用一组针对 system 数据库执行的 Cypher 管理命令来创建和管理用户。当通过 bolt 连接到数据库管理系统 (DBMS) 时,管理命令会自动路由到 system 数据库。

用户状态

system 数据库中有两种用户状态

ACTIVE 状态

(新用户的默认状态)用户可以登录 Neo4j 并根据其权限执行查询。

SUSPENDED 状态 企业版
  • 针对系统图进行认证和授权的本机用户无法登录 Neo4j。如果在使用 Neo4j 时被暂停,他们将失去所有分配的角色及其权限,包括 PUBLIC 角色,直到重新激活。

  • 针对外部 ID 提供者(例如 LDAP)进行认证和授权的用户仍然可以登录。如果在使用 Neo4j 时被暂停,他们会保留外部提供者分配的角色和权限,包括 PUBLIC 角色。要阻止这些情况,您需要使用其身份提供者的机制。

用户管理命令语法

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

命令

SHOW CURRENT USER

语法

SHOW CURRENT USER
  [YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
  [WHERE expression]
  [RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

描述

列出当前用户。

使用 RETURN 子句时,YIELD 子句是强制性的,不得省略。

有关更多信息,请参阅列出当前用户

所需权限

命令

SHOW USERS

语法

SHOW USER[S]
  [WITH AUTH]
  [YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
  [WHERE expression]
  [RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

描述

列出所有用户。

使用 RETURN 子句时,YIELD 子句是强制性的,不得省略。

有关更多信息,请参阅列出用户

所需权限

GRANT SHOW USER

有关更多信息,请参阅DBMS 用户管理权限

命令

SHOW USER PRIVILEGES

语法

SHOW USER[S] [name[, ...]] PRIVILEGE[S] [AS [REVOKE] COMMAND[S]]
  [YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
  [WHERE expression]
  [RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

描述

列出授予指定用户或(如果未指定用户)当前用户的权限。

使用 RETURN 子句时,YIELD 子句是强制性的,不得省略。

SHOW USER name PRIVILEGES 命令在列出权限中进行了描述。

所需权限

GRANT SHOW PRIVILEGE

有关更多信息,请参阅DBMS 权限管理权限

GRANT SHOW USER

有关更多信息,请参阅DBMS 用户管理权限

命令

CREATE USER

语法

CREATE USER name [IF NOT EXISTS]
  [SET [PLAINTEXT | ENCRYPTED] PASSWORD 'password']
  [[SET PASSWORD] CHANGE [NOT] REQUIRED]
  [SET STATUS {ACTIVE | SUSPENDED}]
  [SET HOME DATABASE name]
  [SET AUTH [PROVIDER] 'provider' "{"{SET <key> <value>}..."}"]...

<key><value> 对的 SET AUTH 子句可以包括

SET AUTH [PROVIDER] 'provider' "{"
    {
        SET ID 'id' # a unique identifier of the user in an external system
        | SET [PLAINTEXT | ENCRYPTED] PASSWORD 'password' # only applicable to the 'native' provider
        | SET PASSWORD CHANGE [NOT] REQUIRED # only applicable to the 'native' provider
    }
"}"

描述

创建一个新用户。

必须指定 SET PASSWORD 和/或至少一个 SET AUTH 子句,因为用户必须至少有一个认证提供者。

有关更多信息,请参阅创建用户

所需权限

GRANT CREATE USER

有关更多信息,请参阅DBMS 用户管理权限

命令

CREATE OR REPLACE USER

语法

CREATE OR REPLACE USER name
  [SET [PLAINTEXT | ENCRYPTED] PASSWORD 'password']
  [[SET PASSWORD] CHANGE [NOT] REQUIRED]
  [SET STATUS {ACTIVE | SUSPENDED}]
  [SET HOME DATABASE name]
  [SET AUTH [PROVIDER] 'provider' "{"{SET <key> <value>}..."}"]...

<key><value> 对的 SET AUTH 子句可以包括

SET AUTH [PROVIDER] 'provider' "{"
    {
        SET ID 'id' # a unique identifier of the user in an external system
        | SET [PLAINTEXT | ENCRYPTED] PASSWORD 'password' # only applicable to the 'native' provider
        | SET PASSWORD CHANGE [NOT] REQUIRED # only applicable to the 'native' provider
    }
"}"

描述

创建一个新用户,如果存在同名用户,则替换它。

必须指定 SET PASSWORD 和/或至少一个 SET AUTH 子句,因为用户必须至少有一个认证提供者。

有关更多信息,请参阅创建用户

所需权限

GRANT CREATE USER

有关更多信息,请参阅DBMS 用户管理权限

GRANT DROP USER

有关更多信息,请参阅DBMS 用户管理权限

命令

RENAME USER

语法

RENAME USER name [IF EXISTS] TO otherName

描述

更改用户的名称。

有关更多信息,请参阅重命名用户

所需权限

GRANT RENAME USER

有关更多信息,请参阅DBMS 用户管理权限

命令

ALTER USER

语法

ALTER USER name [IF EXISTS]
  [REMOVE HOME DATABASE]
  [REMOVE { AUTH [PROVIDER[S]] provider[, ...] | ALL AUTH [PROVIDER[S]] }]...
  [SET [PLAINTEXT | ENCRYPTED] PASSWORD 'password']
  [[SET PASSWORD] CHANGE [NOT] REQUIRED]
  [SET STATUS {ACTIVE | SUSPENDED} ]
  [SET HOME DATABASE name]
  [SET AUTH [PROVIDER] 'provider' "{"{SET <key> <value>}..."}"]...

<key><value> 对的 SET AUTH 子句可以包括

SET AUTH [PROVIDER] 'provider' "{"
    {
        SET ID 'id' # a unique identifier of the user in an external system
        | SET [PLAINTEXT | ENCRYPTED] PASSWORD 'password' # PASSWORD clauses are only applicable to the 'native' provider
        | SET PASSWORD CHANGE [NOT] REQUIRED # PASSWORD clauses are only applicable to the 'native' provider
    }
"}"

描述

修改现有用户的设置。

  • 至少需要一个 SETREMOVE 子句。

  • 任何 REMOVE 子句必须出现在第一个 SET 子句之前。

有关更多信息,请参阅修改用户

所需权限

GRANT SET PASSWORD
GRANT SET USER STATUS
GRANT SET USER HOME DATABASE
GRANT SET AUTH

有关更多信息,请参阅DBMS 用户管理权限

命令

ALTER CURRENT USER SET PASSWORD

语法

ALTER CURRENT USER SET PASSWORD FROM 'oldPassword' TO 'newPassword'

描述

更改当前用户的密码。

有关更多信息,请参阅更改当前用户的密码

所需权限

命令

DROP USER

语法

DROP USER name [IF EXISTS]

描述

删除现有用户。

有关更多信息,请参阅删除用户

所需权限

GRANT DROP USER

有关更多信息,请参阅DBMS 用户管理权限

SHOW USER[S] PRIVILEGES 命令在列出权限中进行了描述。

列出当前用户

您可以使用 Cypher 命令 SHOW CURRENT USER 查看当前登录的用户。它会生成一个包含以下列的表格

描述 类型 社区版 企业版

用户

用户名

STRING

角色

授予用户的角色。

在社区版中返回 null

LIST OF STRING

要求更改密码

如果为 true,则用户必须在下次登录时更改密码。如果用户禁用了 native 认证,则此项为 null

BOOLEAN

已暂停

如果为 true,则用户当前已暂停。

在社区版中返回 null

BOOLEAN

主数据库

用户配置的主数据库,如果未配置主数据库,则为 null。如果此数据库不可用且用户未指定要使用的数据库,则将无法登录。

在社区版中返回 null

STRING

SHOW CURRENT USER
表 1. 结果
用户 角色 要求更改密码 已暂停 主数据库

"jake"

["PUBLIC"]

false

false

<null>

行数: 1

此命令仅支持已登录的用户,如果已禁用授权,则返回空结果。

列出用户

您可以使用 Cypher 命令 SHOW USERS 列出所有可用用户。它会生成一个表格,其中每位用户一行,包含以下列

描述 类型 社区版 企业版

用户

用户名

STRING

角色

使用 GRANT ROLE 命令授予用户的本机角色。

用户实际获得的角色集可能与此列中的角色集不同。这取决于数据库管理系统 (DBMS) 配置和用户的认证提供者

例如,如果他们使用外部认证(例如 LDAP 或 OIDC),或者如果 dbms.security.authorization_providers 配置设置中未列出 native

在社区版中返回 null

LIST OF STRING

要求更改密码

如果为 true,则用户必须在下次登录时更改密码。如果用户禁用了 native 认证,则此项为 null

BOOLEAN

已暂停

如果为 true,则用户当前已暂停。

在社区版中返回 null

BOOLEAN

主数据库

为用户配置的主数据库,否则为 null。如果主数据库指向一个数据库或数据库别名,则会解析该主数据库。如果配置的主数据库不可用,并且用户未指定另一个数据库,则登录将失败。

在社区版中返回 null

STRING

首次启动 Neo4j DBMS 时,总会有一个具有管理权限的默认用户 neo4j。可以使用 neo4j-admin dbms set-initial-password <password> 设置初始密码,否则您必须在首次登录后更改密码。

示例 1. 显示用户
SHOW USERS
表 2. 结果
用户 角色 要求更改密码 已暂停 主数据库

"neo4j"

["admin","PUBLIC"]

false

false

<null>

"jake"

["PUBLIC"]

false

false

<null>

行数: 2

示例 2. 显示带有列重新排序和过滤的用户

本示例展示了如何

  • 使用 YIELD 子句重新排序列。

  • 使用 WHERE 子句过滤结果。

SHOW USER YIELD user, suspended, passwordChangeRequired, roles, home
WHERE user = 'jake'
表 3. 结果
用户 已暂停 要求更改密码 角色 主数据库

"jake"

false

false

["PUBLIC"]

<null>

行数: 1

示例 3. 显示带有 RETURN 子句的用户

可以添加 RETURN 子句,以便在过滤后进一步处理结果。在此示例中,RETURN 子句用于过滤掉 roles 列并将 user 列重命名为 adminUser

SHOW USERS YIELD roles, user
WHERE 'admin' IN roles
RETURN user AS adminUser
表 4. 结果
adminUser

"neo4j"

行数: 1

列出用户认证提供者

要检查用户的认证提供者,请使用 SHOW USERS WITH AUTH。该命令为每个用户和每个认证提供者生成一行,除了 SHOW USERS 输出的列外,还包含以下两列

描述 类型 社区版 企业版

提供者

认证提供者的名称。

STRING

认证

包含用户配置的映射。例如,ldap 认证提供者的用户 DN,oidc 认证提供者的唯一外部标识符,或 native 认证提供者的密码状态。

MAP

示例 4. 显示带认证的用户
SHOW USERS WITH AUTH
表 5. 结果
用户 角色 要求更改密码 已暂停 主数据库 提供者 认证

"neo4j"

["admin","PUBLIC"]

false

false

<null>

"native"

{ "password": "***", "changeRequired": false }

"jack"

["PUBLIC"]

false

false

<null>

"native"

{ "password": "***", "changeRequired": false }

"jack"

["PUBLIC"]

false

false

<null>

"oidc1"

{ "id": "jacksIdForOidc1" }

行数: 3

示例 5. 使用过滤显示带认证的用户

显示所有使用 oidc 认证提供者的用户。

SHOW USERS WITH AUTH
WHERE provider = 'oidc1'
表 6. 结果
用户 角色 要求更改密码 已暂停 主数据库 提供者 认证

"jack"

["PUBLIC"]

false

false

<null>

"oidc1"

{ "id": "jacksIdForOidc1" }

行数: 1

创建用户

您可以使用以下 Cypher 命令之一来创建用户,具体取决于您是想创建新用户还是替换现有用户。在这两种情况下,您都可以指定用户的密码、是否必须在下次登录时更改密码、其状态、主数据库以及认证提供者设置。SET 子句可以按任意顺序应用。必须指定 SET PASSWORD 和/或至少一个 SET AUTH 子句,因为用户必须至少有一个认证提供者。

CREATE USER 语法
CREATE USER name [IF NOT EXISTS] (1)
  [SET [PLAINTEXT \| ENCRYPTED] PASSWORD 'password'] (2)
  [[SET PASSWORD] CHANGE [NOT] REQUIRED] (3)
  [SET STATUS {ACTIVE \| SUSPENDED}] (4)
  [SET HOME DATABASE name] (5)
  [SET AUTH [PROVIDER] 'provider' "{"{SET <key> <value>}..."}"]... (6)
CREATE OR REPLACE USER 语法
CREATE OR REPLACE USER name (1)
  [SET [PLAINTEXT \| ENCRYPTED] PASSWORD 'password'] (2)
  [[SET PASSWORD] CHANGE [NOT] REQUIRED] (3)
  [SET STATUS {ACTIVE \| SUSPENDED}] (4)
  [SET HOME DATABASE name] (5)
  [SET AUTH [PROVIDER] 'provider' "{"{SET <key> <value>}..."}"]... (6)

其中

1 指定创建用户的命令。
2 指定用户的密码。'password' 可以是字符串值,也可以是默认值长度至少为 8 个字符的字符串参数。
PLAINTEXTENCRYPTED 关键字是可选的,可用于指定密码格式,即 Neo4j 是否需要对其进行哈希处理或其是否已进行哈希处理。默认情况下,所有密码在存储到 Neo4j system 数据库时都会被加密(哈希)。
  • SET PLAINTEXT PASSWORD 中的可选 PLAINTEXT 具有与 SET PASSWORD 相同的行为。

  • 可选的 ENCRYPTED 用于在明文密码未知但加密密码在数据库备份的 data/databases/databasename/tools/metadata_script.cypher 文件中可用时重新创建现有用户。请参阅恢复用户和角色元数据
    使用 ENCRYPTED,密码字符串应采用 <加密版本>,<哈希>,<盐> 的格式,例如

    • 0 是第一个版本,指代迭代次数为 1SHA-256 密码哈希函数。

    • 1 是第二个版本,指代迭代次数为 1024SHA-256 密码哈希函数。

3 指定用户是否必须在下次登录时更改密码。如果省略可选的 SET PASSWORD CHANGE [NOT] REQUIRED 但提供了密码,则默认值为 CHANGE REQUIREDCHANGE [NOT] REQUIRED 子句的 SET PASSWORD 前缀仅在其直接跟随 SET PASSWORD 'password' 子句且不属于 SET AUTH 子句时才是可选的。
4 指定用户的状态。如果未设置,则默认值为 ACTIVE
5 为用户指定一个主数据库。如果主数据库指向一个数据库或数据库别名,则会解析该主数据库。如果没有设置主数据库,则 DBMS 默认数据库将用作该用户的主数据库。
6 一个或多个 SET AUTH 子句可用于配置外部认证提供者,例如 LDAP 或 OIDC,它们为该用户定义认证/授权提供者。SET AUTH 也可以作为设置本机(基于密码)认证设置(如 SET PASSWORDSET PASSWORD CHANGE REQUIRED)的替代方法。有关更多信息,请参阅本节中的示例,以及 OIDC 的使用认证提供者在用户级别配置 SSO,以及 LDAP 的使用认证提供者在用户级别配置认证/授权
SET AUTH [PROVIDER] 'provider' "{"
    {
        SET ID 'id' # a unique identifier of the user in an external system.
        \| SET [PLAINTEXT \| ENCRYPTED] PASSWORD 'password' # only applicable to the 'native' provider.
        \| SET PASSWORD CHANGE [NOT] REQUIRED # only applicable to the 'native' provider.
    }
"}"

用户名区分大小写。创建的用户将出现在 SHOW USERS 提供的列表中。

  • 在 Neo4j 社区版中没有角色,但所有用户都具有隐含的管理员权限。

  • 在 Neo4j 企业版中,所有用户都会自动分配PUBLIC 角色,从而获得一组基本权限。

示例 6. 创建用户

例如,您可以使用以下命令创建处于暂停状态的用户 jake,指定其主数据库为 anotherDb,并要求其更改密码

CREATE USER jake
SET PASSWORD 'abcd1234' CHANGE REQUIRED
SET STATUS SUSPENDED
SET HOME DATABASE anotherDb

使用认证提供者语法的等效命令是

CREATE USER jake
SET STATUS SUSPENDED
SET HOME DATABASE anotherDb
SET AUTH 'native' {SET PASSWORD 'abcd1234' SET PASSWORD CHANGE REQUIRED}
示例 7. 创建带加密密码的用户

或者您可以创建处于活动状态的用户 Jake,其加密密码(取自数据库备份的 data/databases/databasename/tools/metadata_script.cypher 文件)无需更改,通过运行以下命令

CREATE USER Jake
SET ENCRYPTED PASSWORD '1,6d57a5e0b3317055454e455f96c98c750c77fb371f3f0634a1b8ff2a55c5b825,190ae47c661e0668a0c8be8a21ff78a4a34cdf918cae3c407e907b73932bd16c' CHANGE NOT REQUIRED
SET STATUS ACTIVE

使用认证提供者语法的等效命令是:。

CREATE USER jake
SET STATUS ACTIVE
SET AUTH 'native' {
  SET ENCRYPTED PASSWORD '1,6d57a5e0b3317055454e455f96c98c750c77fb371f3f0634a1b8ff2a55c5b825,190ae47c661e0668a0c8be8a21ff78a4a34cdf918cae3c407e907b73932bd16c'
  SET PASSWORD CHANGE NOT REQUIRED
}

命令中的 SET STATUS {ACTIVE | SUSPENDED}SET HOME DATABASE 部分仅在 Neo4j 企业版中可用。外部提供者的 SET AUTH 子句仅在 Neo4j 企业版中可用。但是,SET AUTH 'native' 可以在 Neo4j 社区版中使用。

CREATE USER 命令是可选幂等的,默认行为是如果用户已存在则抛出异常。将 IF NOT EXISTS 附加到 CREATE USER 命令将确保如果用户已存在,则不会抛出异常,也不会发生任何事情。

示例 8. 如果用户不存在则创建
CREATE USER jake IF NOT EXISTS
SET PLAINTEXT PASSWORD 'abcd1234'

使用认证提供者语法的等效命令是

CREATE USER jake IF NOT EXISTS
SET AUTH 'native' {SET PLAINTEXT PASSWORD 'abcd1234'}

CREATE OR REPLACE USER 命令将导致任何现有用户被删除并创建一个新用户。

示例 9. 创建或替换用户
CREATE OR REPLACE USER jake
SET PLAINTEXT PASSWORD 'abcd1234'

这等效于运行 DROP USER jake IF EXISTS,然后运行 CREATE USER jake SET PASSWORD 'abcd1234'

使用认证提供者语法的等效命令是

CREATE OR REPLACE USER jake
SET AUTH 'native' {SET PLAINTEXT PASSWORD 'abcd1234'}

CREATE OR REPLACE USER 命令不允许使用 IF NOT EXISTS

重命名用户

用户可以使用 RENAME USER 命令进行重命名。

RENAME USER jake TO bob

要验证更改,您可以使用 SHOW USERS 命令

SHOW USERS
表 7. 结果
用户 角色 要求更改密码 已暂停 主数据库

"bob"

["PUBLIC"]

true

false

<null>

"neo4j"

["admin","PUBLIC"]

true

false

<null>

行数: 2

RENAME USER 命令仅在使用本机认证和授权时可用。

修改用户

您可以使用 ALTER USER 命令修改用户。该命令允许您更改用户的密码、状态、主数据库和认证提供者设置。SETREMOVE 子句可以按任意顺序应用。但是,所有 REMOVE 子句必须出现在第一个 SET 子句之前,并且命令中至少需要一个 SETREMOVE 子句。如果省略任何 SETREMOVE 子句,则相应的设置将不会更改。

ALTER USER name [IF EXISTS] (1)
  [REMOVE HOME DATABASE] (2)
  [REMOVE { AUTH [PROVIDER[S]] provider[, ...] \| ALL AUTH [PROVIDER[S]] }]... (3)
  [SET [PLAINTEXT | ENCRYPTED] PASSWORD 'password'] (4)
  [[SET PASSWORD] CHANGE [NOT] REQUIRED] (5)
  [SET STATUS {ACTIVE | SUSPENDED}] (6)
  [SET HOME DATABASE name] (7)
  [SET AUTH [PROVIDER] 'provider' "{"{SET <key> <value>}..."}"]... (8)

其中

1 指定修改用户的命令。
2 删除用户的主数据库。因此,DBMS 默认数据库将用作该用户的主数据库。
3 从用户中移除一个、多个或所有现有认证提供者。但是,用户必须始终至少有一个认证提供者。因此,REMOVE ALL AUTH 必须与至少一个 SET AUTH 子句结合使用才能满足此要求。
4 指定用户的密码。'password' 可以是字符串值,也可以是默认值长度至少为 8 个字符的字符串参数。
PLAINTEXTENCRYPTED 关键字是可选的,可用于指定密码格式,即 Neo4j 是否需要对其进行哈希处理或其是否已进行哈希处理。默认情况下,所有密码在存储到 Neo4j system 数据库时都会被加密(哈希)。
  • SET PLAINTEXT PASSWORD 中的可选 PLAINTEXT 具有与 SET PASSWORD 相同的行为。

  • 可选的 ENCRYPTED 用于在明文密码未知但加密密码在数据库备份的 data/databases/databasename/tools/metadata_script.cypher 文件中可用时重新创建现有用户。请参阅恢复用户和角色元数据
    使用 ENCRYPTED,密码字符串应采用 <加密版本>,<哈希>,<盐> 的格式,例如

    • 0 是第一个版本,指代迭代次数为 1SHA-256 密码哈希函数。

    • 1 是第二个版本,指代迭代次数为 1024SHA-256 密码哈希函数。

5 指定用户是否必须在下次登录时更改密码。如果向用户添加本机认证时(无论是先删除预先存在的本机认证还是用户最初没有本机认证)省略可选的 SET PASSWORD CHANGE [NOT] REQUIRED,则默认值为 CHANGE REQUIREDCHANGE [NOT] REQUIRED 子句的 SET PASSWORD 前缀仅在其直接跟随 SET PASSWORD 'password' 子句且不属于 SET AUTH 子句时才是可选的。
6 指定用户的状态。
7 为用户指定一个主数据库。如果主数据库指向一个数据库或数据库别名,则会解析该主数据库。如果没有设置主数据库,则 DBMS 默认数据库将用作该用户的主数据库。
8 一个或多个 SET AUTH 子句可用于设置认证提供者,它们为该用户定义认证/授权提供者。这可能用于配置外部认证提供者,如 LDAP 或 OIDC,但也可以作为设置本机(基于密码)认证设置(如 SET PASSWORDSET PASSWORD CHANGE REQUIRED)的替代方法。有关更多信息,请参阅本节中的示例,以及使用认证提供者在用户级别配置 SSO,以及使用认证提供者在用户级别配置认证/授权
SET AUTH [PROVIDER] 'provider' "{"
    {
        SET ID 'id' # a unique identifier of the user in an external system
        \| SET [PLAINTEXT \| ENCRYPTED] PASSWORD 'password' # only applicable to the 'native' provider
        \| SET PASSWORD CHANGE [NOT] REQUIRED # only applicable to the 'native' provider
    }
"}"
示例 10. 修改用户的密码和状态

例如,您可以通过运行以下命令修改用户 bob,设置新密码和活动状态,并取消更改密码的要求

ALTER USER bob
SET PASSWORD 'abcd5678' CHANGE NOT REQUIRED
SET STATUS ACTIVE

使用认证提供者语法的等效命令是

ALTER USER bob
SET AUTH 'native' {SET PASSWORD 'abcd5678' SET PASSWORD CHANGE NOT REQUIRED}
SET STATUS ACTIVE
示例 11. 修改用户以使其当前密码过期

例如,您可以修改用户 bob,使其当前密码过期,以便他在下次登录时必须更改密码

ALTER USER bob
SET PASSWORD CHANGE REQUIRED

使用认证提供者语法的等效命令是

ALTER USER bob
SET AUTH 'native' {SET PASSWORD CHANGE REQUIRED}
示例 12. 修改用户以使用外部 OIDC 认证提供者

例如,您可以修改用户 bob,移除其本机认证提供者并添加一个外部 OIDC 认证提供者

ALTER USER bob
REMOVE AUTH 'native'
SET AUTH 'oidc-mysso1' {SET ID 'bobsUniqueMySso1Id'}
示例 13. 修改用户以使用多个外部 OIDC 认证提供者

例如,您可以修改用户 bob,移除其所有现有认证提供者并添加两个外部 OIDC 认证提供者

ALTER USER bob
REMOVE ALL AUTH
SET AUTH 'oidc-mysso1' {SET ID 'bobsUniqueMySso1Id'}
SET AUTH 'oidc-mysso2' {SET ID 'bobsUniqueMySso2Id'}
示例 14. 为用户分配不同的主数据库

例如,您可以通过为用户 bob 分配不同的主数据库来修改他

ALTER USER bob
SET HOME DATABASE anotherDbOrAlias
示例 15. 从用户中移除主数据库并将其状态设置为暂停

例如,您可以通过移除用户 bob 的主数据库并将其状态设置为暂停来修改他

ALTER USER bob
REMOVE HOME DATABASE
SET STATUS SUSPENDED

修改用户时,只需指定所需的更改。例如,省略查询中 CHANGE [NOT] REQUIRED 部分将保持该部分不变。

命令中的 SET STATUS {ACTIVE | SUSPENDED}SET HOME DATABASEREMOVE HOME DATABASEREMOVE AUTH 部分仅在 Neo4j 企业版中可用。外部提供者的 SET AUTH 子句仅在 Neo4j 企业版中可用。但是,SET AUTH 'native' 可以在 Neo4j 社区版中使用。

对用户的更改将显示在 SHOW USERS 提供的列表中

SHOW USERS
表 8. 结果
用户 角色 要求更改密码 已暂停 主数据库

"bob"

["PUBLIC"]

false

false

<null>

"neo4j"

["admin","PUBLIC"]

true

false

<null>

行数: 2

此命令的默认行为是如果用户不存在则抛出异常。向命令添加可选参数 IF EXISTS 可使其幂等,并确保不抛出异常。如果用户不存在,则不会发生任何事情。

ALTER USER nonExistingUser IF EXISTS SET PASSWORD 'abcd1234'

更改当前用户的密码

用户可以使用 ALTER CURRENT USER SET PASSWORD 更改密码。除了新密码外,还需要旧密码,新旧密码都可以是字符串值或字符串参数。当用户执行此命令时,它将更改其密码并设置 CHANGE NOT REQUIRED 标志。

ALTER CURRENT USER
SET PASSWORD FROM 'password1' TO 'password2'

此命令仅适用于已登录用户,且不能在禁用认证的情况下运行。

删除用户

用户可以使用 DROP USER 删除。

DROP USER bob

删除用户不会自动终止相关的连接、会话、事务或查询。

但是,当用户被删除后,它将不再显示在 SHOW USERS 提供的列表中

SHOW USERS
表 9. 结果
用户 角色 要求更改密码 已暂停 主数据库

"neo4j"

["admin","PUBLIC"]

true

false

<null>

行数: 1

© . All rights reserved.