一、在 Windows 上处理 Gitea 密码问题
1. 打开命令提示符:
- 以管理员身份运行命令提示符
2. 导航到 Gitea 安装目录:
- 假设你在
C:\gitea
下安装了 Gitea,使用以下命令导航到 Gitea 目录:
cd C:\gitea
3. 重置密码:
- 使用 Gitea 的命令行工具重置密码:
gitea.exe admin user change-password --username <用户名> --password <新密码>
4. 重启 Gitea:
- 关闭并重新启动 Gitea 服务或重新运行
gitea.exe
二、在 Ubuntu 上处理 Gitea 密码问题
1. 打开终端:
- 以管理员身份运行终端
2. 定位 Gitea 可执行文件:
- 通常文件位于
/usr/local/bin/gitea
或/usr/bin/gitea
。可以用以下命令找到它:
which gitea
3. 重置密码:
- 使用 Gitea 提供的命令行工具重置密码:
sudo gitea admin user change-password --username <用户名> --password <新密码>
4. 重启 Gitea 服务:
- 使用以下命令重启 Gitea:
sudo systemctl restart gitea
三、通过数据库重置
如果使用的是 MySQL 数据库,可以通过以下步骤详细地重置 Gitea 管理员的密码
1. 登录 MySQL 数据库
首先,需要进入 MySQL 数据库。执行以下命令来登录:
mysql -u root -p
2. 连接到 Gitea 使用的数据库
通过以下命令列出所有数据库:
SHOW DATABASES;
找到 Gitea 使用的数据库名称。假设数据库名称为
gitea
,输入以下命令切换到该数据库:
USE gitea;
3. 查找用户的记录
执行以下 SQL 查询来查找 Gitea 中 root 用户的信息:
SELECT id, name, passwd FROM user WHERE name = 'root';
这将返回 root 用户的
id
、用户名和密码哈希
4. 生成新的密码哈希
在终端中(不在 MySQL 内),使用 Gitea 的命令生成一个新的加密密码哈希:
gitea generate password
该命令将输出一个加密后的密码哈希(例如
pbkdf2
哈希),记下这个值
5. 更新数据库中的密码
MySQL 终端,执行以下 SQL 语句来更新密码。将
<新密码哈希>
替换为刚才生成的密码哈希:
UPDATE user SET passwd = '<新密码哈希>' WHERE name = 'root';
确认更新是否成功:
SELECT id, name, passwd FROM user WHERE name = 'root';
ps: 如果只是知道
新密码哈希意义不大,得同时知道对应的明文密码。
6. 重启 Gitea 服务
退出 MySQL:
EXIT;
重启 Gitea 服务以使密码生效。在 Ubuntu 上,可以执行以下命令:
sudo systemctl restart gitea
补充:
Gitea 在数据库中存储密码时不是以明文形式保存的,而是经过加密处理。具体来说,Gitea 使用一种加密算法(如
pbkdf2
或
argon2
)来对密码进行哈希处理,并将加密后的哈希值存储在数据库的
passwd
字段中
加密算法说明
- PBKDF2:是一种常用的密码加密算法,结合密码和随机生成的盐值来进行多次哈希,从而得到最终的加密密码。它的强度通过迭代次数和哈希算法(如
SHA-256
)来调整 - Argon2:是一种现代密码哈希算法,专门为抗 GPU 破解设计。它支持多种模式,并且能有效利用内存带宽
当 Gitea 生成或更新用户密码时,使用这些算法对密码进行加密处理,并将加密后的值存储到数据库中。MySQL 数据库存储的是这个加密后的哈希值,而不是明文密码,因此即使直接修改数据库,也需要插入加密后的哈希值
版权归原作者 獨枭 所有, 如有侵权,请联系我们删除。