前言

开源版本的 FastGPT 默认只有一个超级用户 root。为了更好地管理应用和知识库,可以通过操作 MongoDB 数据库来增加新的用户和团队。本文将详细介绍操作步骤。

所需环境

  • 已安装并运行的 FastGPT 实例
  • MongoDB 客户端工具(如 Mongo Shell 或 Robo 3T 等)

操作步骤

1. 进入 Mongo 容器

如果你使用的是容器化部署(如 Podman 或 Docker),可以使用以下命令进入运行中的 Mongo 容器:

sudo docker exec -it mongo bash

成功进入容器后,命令行终端的提示符会发生变化,通常会变为容器内的 Shell 环境。

2. 登录 Mongo 数据库

方法一:直接登录(推荐)

mongo --username fastgpt --password fastgpt --authenticationDatabase admin

方法二:分步登录(适用于安全审计限制不能直接输密码的情况)

先输入用户名:

mongo --username fastgpt

随后终端将提示你输入密码(密码输入时不显示字符),输入正确后即可登录。

3. 增加新用户

users 集合中插入一条新记录:

db.getCollection("users").insert({
    username: "demo",
    password: "756bc47cb5215dc3329ca7e1f7be33a2dad68990bb94b76d90aa07f4e44a233a",
    status: "active",
    avatar: "/icon/human.svg",
    balance: NumberInt("100000"),
    promotionRate: NumberInt("10"),
    timezone: "Asia/Shanghai",
    createTime: new ISODate()
});

4. 创建新团队

teams 集合中插入一条新记录:

db.getCollection("teams").insert({
    name: "New Team",
    ownerId: ObjectId("65916f1a52ac39c5d10bb505"),
    avatar: "/icon/newteam.svg",
    createTime: new ISODate(),
    balance: NumberInt("100000"),
    maxSize: NumberInt("10"),
    __v: NumberInt("0")
});

5. 将用户加入团队

team_members 集合中插入一条新记录:

db.getCollection("team_members").insert({
    teamId: ObjectId("65916f3952ac39c5d10bb506"),
    userId: ObjectId("65916f1a52ac39c5d10bb505"),
    name: "Owner",
    role: "owner",
    status: "active",
    createTime: new ISODate(),
    defaultTeam: true
});

密码加密规则

如果需要创建自定义密码,需要按以下规则加密:

  1. 使用 SHA-256 算法对原始密码进行第一次 hash
  2. 将第一次 hash 的结果作为字符串,再进行一次 SHA-256 hash
  3. 得到的第二次 hash 结果即为最终用于数据库的加密密码

Python 示例代码:

import hashlib

def encrypt_password(password: str) -> str:
    # 第一次 SHA-256
    first_hash = hashlib.sha256(password.encode()).hexdigest()
    # 第二次 SHA-256
    final_hash = hashlib.sha256(first_hash.encode()).hexdigest()
    return final_hash

# 示例
password = "your_password_here"
encrypted = encrypt_password(password)
print(encrypted)

注意事项

  • ⚠️ 操作数据库前请先备份
  • ⚠️ ObjectId 需要与实际创建的用户/团队 ID 对应
  • ⚠️ 默认密码 demo 的加密值仅供参考,实际使用时建议生成新的

原创内容,转载需授权