91 lines
3.2 KiB
Bash
91 lines
3.2 KiB
Bash
|
|
#!/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
|
||
|
|
|