Gitea 忘记密码解决方案

一、在 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 使用一种加密算法(如 pbkdf2argon2)来对密码进行哈希处理,并将加密后的哈希值存储在数据库的 passwd 字段中

加密算法说明

  1. PBKDF2:是一种常用的密码加密算法,结合密码和随机生成的盐值来进行多次哈希,从而得到最终的加密密码。它的强度通过迭代次数和哈希算法(如 SHA-256)来调整

  2. Argon2:是一种现代密码哈希算法,专门为抗 GPU 破解设计。它支持多种模式,并且能有效利用内存带宽

当 Gitea 生成或更新用户密码时,使用这些算法对密码进行加密处理,并将加密后的值存储到数据库中。MySQL 数据库存储的是这个加密后的哈希值,而不是明文密码,因此即使直接修改数据库,也需要插入加密后的哈希值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值