#!/bin/bash # 将 renjianbo 用户添加到 Administrators 组的脚本 # 适用于 Gerrit 3.9.0 GERRIT_DIR="/home/renjianbo/gerrit_install/review_site" JAVA_HOME="/usr/local/java/jdk-17.0.12+7" USERNAME="renjianbo" echo "==========================================" echo "将用户 $USERNAME 添加到 Administrators 组" echo "==========================================" echo "" cd "$GERRIT_DIR" || exit 1 export JAVA_HOME export PATH=$JAVA_HOME/bin:$PATH # 查找 H2 数据库 JAR 文件 H2_JAR=$(find . -name "h2*.jar" | head -1) if [ -z "$H2_JAR" ]; then echo "❌ 未找到 H2 数据库 JAR 文件" exit 1 fi echo "使用 H2 JAR: $H2_JAR" echo "" # 查找用户的 account_id echo "查找用户账户..." ACCOUNT_ID=$(java -cp "$H2_JAR" org.h2.tools.Shell -url "jdbc:h2:./db/ReviewDB" -user sa -password "" -sql "SELECT account_id FROM accounts WHERE user_name = '$USERNAME' OR full_name LIKE '%$USERNAME%' LIMIT 1;" 2>&1 | grep -E "^[0-9]+" | head -1) if [ -z "$ACCOUNT_ID" ]; then echo "⚠️ 未找到用户 $USERNAME,尝试查找第一个账户..." ACCOUNT_ID=$(java -cp "$H2_JAR" org.h2.tools.Shell -url "jdbc:h2:./db/ReviewDB" -user sa -password "" -sql "SELECT account_id FROM accounts ORDER BY account_id LIMIT 1;" 2>&1 | grep -E "^[0-9]+" | head -1) fi if [ -z "$ACCOUNT_ID" ]; then echo "❌ 无法找到任何账户" exit 1 fi echo "找到账户 ID: $ACCOUNT_ID" echo "" # 查找 Administrators 组的 group_id echo "查找 Administrators 组..." GROUP_ID=$(java -cp "$H2_JAR" org.h2.tools.Shell -url "jdbc:h2:./db/ReviewDB" -user sa -password "" -sql "SELECT group_id FROM account_groups WHERE name = 'Administrators' LIMIT 1;" 2>&1 | grep -E "^[0-9]+" | head -1) if [ -z "$GROUP_ID" ]; then echo "❌ 未找到 Administrators 组" exit 1 fi echo "找到 Administrators 组 ID: $GROUP_ID" echo "" # 检查用户是否已经是管理员 echo "检查用户是否已经是管理员..." IS_ADMIN=$(java -cp "$H2_JAR" org.h2.tools.Shell -url "jdbc:h2:./db/ReviewDB" -user sa -password "" -sql "SELECT COUNT(*) FROM account_group_members WHERE account_id = $ACCOUNT_ID AND group_id = $GROUP_ID;" 2>&1 | grep -E "^[0-9]+" | head -1) if [ "$IS_ADMIN" = "1" ]; then echo "✅ 用户已经是管理员,无需添加" exit 0 fi # 添加用户到管理员组 echo "添加用户到 Administrators 组..." java -cp "$H2_JAR" org.h2.tools.Shell -url "jdbc:h2:./db/ReviewDB" -user sa -password "" -sql "INSERT INTO account_group_members (account_id, group_id) VALUES ($ACCOUNT_ID, $GROUP_ID);" 2>&1 | grep -v "^[>|]" | grep -v "jdbc:h2" || true # 验证 echo "" echo "验证添加结果..." NEW_IS_ADMIN=$(java -cp "$H2_JAR" org.h2.tools.Shell -url "jdbc:h2:./db/ReviewDB" -user sa -password "" -sql "SELECT COUNT(*) FROM account_group_members WHERE account_id = $ACCOUNT_ID AND group_id = $GROUP_ID;" 2>&1 | grep -E "^[0-9]+" | head -1) if [ "$NEW_IS_ADMIN" = "1" ]; then echo "" echo "✅ 成功!用户 $USERNAME (Account ID: $ACCOUNT_ID) 已添加到 Administrators 组" echo "" echo "下一步:" echo "1. 退出并重新登录 Gerrit" echo "2. 刷新浏览器页面" echo "3. 应该能看到 'CREATE NEW' 按钮了" else echo "" echo "❌ 添加失败,请检查错误信息" fi