重置 GitLab 管理员密码

手里有一个旧版本的私有化部署的 GitLab 数据,临时要启动一下看一下之前的代码。由于之前就是 Docker 部署的,所以在数据文件里查了下之前部署的版本号,直接就用 Docker 启动了。启动都很顺利,但是问题出在已经没人记得之前的管理员密码了,所以需要重置管理员密码。

重置 GitLab 管理员密码的方法也很简单,GitLab 官方提供了不使用 UI 就可以重置任意用户密码的方法。虽然该方法不局限于管理员账户,但是正常情况下普通账户使用管理员账户重置即可。 对于 GitLab 13.9 的版本,可以使用 Rake 任务的方式直接重置,不过手里的版本没这么新,所以还是采用传统的 Rails 控制台进行操作。

首先进入 Rails 控制台,对于非源码安装的 GitLab,都可以直接使用 gitlab-rails console 命令进入,通过 Docker 启动的需要先进入 Docker 容器再执行命令,如图:

然后在 Rails 控制台中按顺序执行:

  1. 通过用户名或 ID 查询用户
    对于管理员账户,默认用户名为 root,如果修改过,可以使用 ID:1 进行查询

    1
    2
    3
    4
    5
    6
    7
    8
    # 通过用户名查询
    user = User.find_by_username 'exampleuser'

    # 通过 ID 查询
    user = User.find(123)

    # 通过用户邮箱查询
    user = User.find_by(email: 'user@example.com')
  2. 查询到用户后,就可以直接修改用户的密码了:

    1
    2
    3
    new_password = 'abcd1234!'
    user.password = new_password
    user.password_confirmation = new_password
  3. 然后保存,退出

    1
    2
    3
    user.save!

    exit

全部流程如下:

此时,管理员用户的密码就已经重置完成,可以正常进行登录了。

参考文档