gitlab重置root用户密码

前提

  • 需要知道gitlab账号的用户名,id,或者邮箱其一
  • 需要gitlab实例机器的管理员权限账号
  • 新密码必须符合gitlab密码规则

操作

  1. 打开Rails Console
    1
    sudo gitlab-rails console
  2. 找到gitlab用户
    • 通过用户名
      1
      user = User.find_by_username 'exampleuser'
    • 通过id
      1
      user = User.find(123)
    • 通过邮箱
      1
      user = User.find_by(email: 'user@example.com')
  3. 重置密码
    重置为随机密码:
    1
    2
    3
       new_password = ::User.random_password
    user.password = new_password
    user.password_confirmation = new_password
    重置为自定义密码:
    1
    2
    3
    new_password = 'examplepassword'
    user.password = new_password
    user.password_confirmation = new_password
  4. 可以是否邮件通知用户
    1
    user.send_only_admin_changed_your_password_notification!
  5. 保存用户
    1
    user.save!
  6. 退出控制台
    1
    exit

重置root账号密码

如果要重置root账号的密码

  • 如果root用户名没改过,直接通过root查找
  • 如果用户名修改了,并且不知道新的用户名,通过id为1查找,一般root账号id就是1

问题

  • 修改不生效
    可能是因为打开了邮箱验证,可以通过rail console关闭。
    1
    2
    user = User.find(1)
    user.skip_reconfirmation!
  • 没有root账号
    遇到过部署的gitlab没有root账号的情况,通过手动将其他用户设为root账号解决
    1. 查看用户属性
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      u = User.find(1)
      pp u.attributes

      irb(main):003:0> pp u.attributes
      {"id"=>1,
      "email"=>"admin@example.com",
      "admin"=>false, ##这个属性表示是否为管理员
      ...
      "group_view"=>nil,
      "managing_group_id"=>nil,
      "user_type"=>"human",
      "static_object_token_encrypted"=>nil,
      "otp_secret_expires_at"=>nil,
      "otp_secret"=>nil}
    2. 设置为管理员
      1
      2
      3
      u.admin = true
      u.save!
      exit
      也可以通过这种方式修改用户的其他属性

gitlab官方文档