官方gitlab-rails console地址:
https://guides.rubyonrails.org/command_line.html#bin-rails-console
https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password
gitlab 命令行重置密码:
前提条件:需要保证Gitlab、Redis同时处于启动状态。可以运行gitlab-ctl start或者gitlab-ctl restart命令进行启动或者重启。
切换到Gitlab的bin目录下,如果你配置了系统变量PATH则可以不用切换。(如果你在服务器上安装Gitlab时使用的指定服务器用户,则需要你切换用户到当初安装Gitlab的账户上去)
准备就绪后,我们可以执行如下命令进入Gitlab控制的了,命令:
gitlab-rails console -e production
低版本可以尝试使用下面一句命令:
gitlab-rails console -e production
[root@VM-16-13-centos .ssh]# gitlab-rails console -e production
--------------------------------------------------------------------------------
GitLab: 12.3.5 (2417d5becc7)
GitLab Shell: 10.0.0
PostgreSQL: 10.9
--------------------------------------------------------------------------------
Loading production environment (Rails 5.2.3)
irb(main):001:0> user=User.where(id:1).first
=> #<User id:1 @root>
irb(main):002:0> user=User.where(username:swyan).first #执行报错,用户名称需要单引号
Traceback (most recent call last):
1: from (irb):2
NameError (undefined local variable or method `swyan' for main:Object)
irb(main):003:0> user=User.where(username:'swyan').first #查询用户的email,用户名,密码等信息,id:1 表示root账号
=> #<User id:136 @swyan>
irb(main):004:0> user=User.where(id:136).first #通过用户id更改名称
=> #<User id:136 @swyan>
irb(main):005:0> user.password='beta123456' #设置密码
=> "beta123456"
irb(main):006:0> user.password_confirmation='beta123456' #确认密码
=> "beta123456"
irb(main):007:0> user.save! #保存
Enqueued ActionMailer::DeliveryJob (Job ID: 88a2eb60-5980-4ae2-9068-0baf0f99efe0) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", #<GlobalID:0x00007f325ba38f88 @uri=#<URI::GID gid://gitlab/User/136>>
=> true
irb(main):008:0> quit #退出
[root@VM-16-13-centos .ssh]#
如上,看到Gitlab控制台保存密码成功后会打印出 ...true等一堆信息,表示设置成功了!上面可以看到触发了发送邮件的Job,它会发送一封电子邮件到刚才重置密码的账户绑定的邮箱中,内容大致如下:
在Gitlab控制台执行exit或者quit命令即可退出控制台。
通过Gitlab命令重置完密码后,即可访问Gitlab登陆界面进行登录啦,账户名就是上面通过User.all获取到的账户列表里面的用户,密码就是刚才重新设置的密码。登录进入主页如下:
查看所有用户
User.all
通过email地址获取用户id:
user=User.where(email:'jenkins@domian.com').first
通过用户名称获取id:
user=User.where(username:'swyan').first
方法二:
使用Rake Task重置管理员帐户密码。
官方文档:
https://docs.gitlab.com/ce/security/reset_user_password.html
登录GitLab应用所在的服务器,执行下列命令:
gitlab-rake "gitlab:password:reset"
//输入管理员帐户及两次新密码