跳到主要内容

重置 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 写入数据库。重置密码时需要同时更新 root 和 admin 两个用户,确保均可正常登录。