跳到主要内容

重置 root 密码

1. 概述

CSGHub 使用 Casdoor 作为统一认证系统,root 管理员密码存储在 Casdoor 数据库中。当 root 密码丢失或需要变更时,可通过以下方式重置。

2. 通过 Casdoor 管理后台修改

若能使用当前密码登录,可直接在界面中修改。

  1. 访问 Casdoor 管理后台(如 https://casdoor.example.com
  2. 使用 root 账号登录
  3. 选择 用户管理用户
  4. 找到用户 root
  5. 点击编辑,选择 编辑密码
  6. 输入 新密码

3. 通过 SQL 脚本重置密码

当无法登录 Casdoor 管理后台时,可通过执行 SQL 脚本直接更新数据库中 root 用户的密码。

3.1 安装 htpasswd

# macOS(内置,无需安装)
# Ubuntu / Debian
sudo apt install -y apache2-utils
# CentOS / RHEL
sudo yum install -y httpd-tools

3.2 生成密码哈希并更新数据库

ROOT_PASSWORD="your-new-password"
ROOT_HTPASSWD=$(htpasswd -bnBC 10 "" "$ROOT_PASSWORD" | tr -d ':\n')
kubectl exec -n csghub csghub-postgresql-0 -c postgresql -- \
psql -U csghub -d csghub_casdoor -c \
"UPDATE \"user\" SET password='${ROOT_HTPASSWD}' WHERE name = 'root';"

3.3 同步更新 Secret

为了确保下次 Helm 升级时密码不被覆盖,建议同步更新 Secret 中的密码值:

kubectl patch secret -n csghub csghub-casdoor-init --type='json' \
-p="$(jq -n \
--arg pass "$(echo -n "$ROOT_PASSWORD" | base64)" \
--arg htpasswd "$(echo -n "$ROOT_HTPASSWD" | base64)" \
'[
{"op": "replace", "path": "/data/INIT_ADMIN_PASSWORD", "value": $pass},
{"op": "replace", "path": "/data/INIT_ADMIN_HTPASSWD", "value": $htpasswd}
]')"

4. 在 Helm values 中配置初始密码

首次部署时,可以在 values 文件中指定 root 密码:

casdoor:
admin:
name: "root"
password: "your-password"
警告

此方式仅对首次部署生效,已存在的密码不会被覆盖。

5. 密码同步说明

CSGHub 中存在两个 Casdoor 用户:

用户名用途
root管理员账号,用于登录 CSGHub
adminCasdoor 管理后台账号,用于管理认证配置

root 用户的密码仅在首次部署时通过 Casdoor 的 init_data.json 写入数据库。重置密码时需要同时更新 rootadmin 两个用户,确保均可正常登录。