gitlab重置用户账号密码,包括root账号

前提

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

操作

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

重置root账号密码

如果要重置root账号的密码

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

问题

  • 修改不生效
    可能是因为打开了邮箱验证,可以通过rail console关闭。
     user = User.find(1)
     user.skip_reconfirmation!
    
  • 没有root账号
    遇到过部署的gitlab没有root账号的情况,通过手动将其他用户设为root账号解决
    1. 查看用户属性
    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}	
    
    1. 设置为管理员
    u.admin = true
    u.save!
    exit
    
    也可以通过这种方式修改用户的其他属性

gitlab官方文档