恢复管理员用户和密码

本页介绍了当用户丢失密码时,如何重置密码以恢复其访问权限。具体重点在于:当所有管理员用户都被取消了管理员角色时如何恢复管理员用户,以及如果内置管理员角色已被删除,该如何重新创建它。

禁用身份验证

  1. 停止 Neo4j

    bin/neo4j stop
  2. 打开 neo4j.conf 文件,并将 dbms.security.auth_enabled 参数设置为 false 以禁用身份验证

    dbms.security.auth_enabled=false
  3. 在恢复阶段阻塞网络连接,以便用户只能通过 localhost 连接到 Neo4j。这可以通过暂时注释掉 server.default_listen_address 参数并提供特定的本地主机值来实现。

    server.default_listen_address=127.0.0.1

    确保已阻止为任何配置了 listen_addresses 的单个服务建立的所有网络连接。

  4. 启动 Neo4j

    bin/neo4j start
  1. 停止集群的所有成员

    bin/neo4j stop
  2. 在每个成员上,打开 neo4j.conf 文件并修改以下设置

    1. dbms.security.auth_enabled 参数设置为 false 以禁用身份验证

      dbms.security.auth_enabled=false
    2. 禁用 HTTP 和 HTTPS 网络连接,并将 bolt 连接器限制为仅使用 localhost。将 server.http.enabled 设置为 false。这可以确保在恢复期间没有外部人员能够访问集群。

      server.http.enabled=false
      #server.https.enabled=true
      server.bolt.listen_address:127.0.0.1
  3. 启动集群的所有成员

    bin/neo4j start

恢复丢失的密码

您可以使用诸如 Cypher Shell 或 Neo4j Browser 之类的客户端连接到 system 数据库,并为管理员用户设置新密码。

在集群部署中,您只需在一个集群成员上完成这些步骤。

  1. 按照您的部署方式完成禁用身份验证中的步骤。

  2. 使用 Cypher shell 连接到 system 数据库。或者,登录 Neo4j Browser。

    bin/cypher-shell -d system

    如果您为 bolt 连接器指定了非默认端口,请在 cypher-shell 命令中添加 -a neo4j://<your-cluster-member>:<non-default-bolt-port>,以便能够连接到您的集群成员。

  3. 为管理员用户设置新密码。在本例中,管理员用户名为 neo4j

    ALTER USER neo4j SET PASSWORD 'mynewpassword'
  4. 退出 cypher-shell 控制台

    :exit;
  5. 按照您的部署方式执行恢复后步骤

恢复未分配的管理员角色

您可以使用诸如 Cypher Shell 或 Neo4j Browser 之类的客户端连接到 system 数据库,并将管理员用户角色授予现有用户。

在集群部署中,您只需在一个集群成员上完成这些步骤。

  1. 按照您的部署方式完成禁用身份验证中的步骤。

  2. 使用 Cypher shell 连接到 system 数据库。或者,登录 Neo4j Browser。

    bin/cypher-shell -d system

    如果您为 bolt 连接器指定了非默认端口,请在 cypher-shell 命令中添加 -a neo4j://<your-cluster-member>:<non-default-bolt-port>,以便能够连接到您的集群成员。

  3. 将管理员用户角色授予现有用户。在本例中,用户名为 neo4j

    GRANT ROLE admin TO neo4j
  4. 退出 cypher-shell 控制台

    :exit;
  5. 按照您的部署方式执行恢复后步骤

恢复管理员角色

如果您已从系统中完全删除了管理员角色,可以使用诸如 Cypher Shell 或 Neo4j Browser 之类的客户端连接到 system 数据库,并使用其原始能力重新创建该角色。

在集群部署中,您只需在一个集群成员上完成这些步骤。

  1. 按照您的部署方式完成禁用身份验证中的步骤。

  2. 使用 Cypher shell 连接到 system 数据库。或者,登录 Neo4j Browser。

    bin/cypher-shell -d system

    如果您为 bolt 连接器指定了非默认端口,请在 cypher-shell 命令中添加 -a neo4j://<your-cluster-member>:<non-default-bolt-port>,以便能够连接到您的集群成员。

  3. 使用其原始能力重新创建管理员角色。

    CREATE ROLE admin;
    GRANT ALL DBMS PRIVILEGES ON DBMS TO admin;
    GRANT TRANSACTION MANAGEMENT ON DATABASE * TO admin;
    GRANT START ON DATABASE * TO admin;
    GRANT STOP ON DATABASE * TO admin;
    GRANT MATCH {*} ON GRAPH * TO admin;
    GRANT WRITE ON GRAPH * TO admin;
    GRANT ALL ON DATABASE * TO admin;
  4. 将管理员用户角色授予现有用户。

    在运行 :exit 命令之前,请将新创建的角色授予用户。虽然这是可选的,但如果不执行此步骤,您将只把所有管理员权限集中在一个没有分配给任何人的角色中。

    要将角色授予用户(假设您现有的用户名为 neo4j),您可以运行 GRANT ROLE admin TO neo4j;

  5. 退出 cypher-shell 控制台

    :exit;
  6. 按照您的部署方式执行恢复后步骤

恢复后步骤

  1. 停止 Neo4j

    bin/neo4j stop
  2. 启用身份验证并将 Neo4j 恢复到其原始配置(请参阅禁用身份验证)。

  3. 启动 Neo4j

    bin/neo4j start
  1. 停止集群成员。

    bin/neo4j stop
  2. 启用身份验证并将每个集群成员恢复到其原始配置(请参阅禁用身份验证)。

  3. 启动集群(所有集群成员)

    bin/neo4j start