Timbo Site

write something


解决Archiva的Account Locked问题

最近在使用Archiva时忘记密码,尝试次数过多,结果把账户锁定掉了 (实际上是问了部门的人有没有人知道密码然后一堆的人就狂登陆结果被锁掉了…)

Admin和其他的账户都锁定,建立新用户、忘记密码这些功能一点都报404 只能通过大致下面步骤来解决:

  • 找到Archiva的db文件夹中的users文件夹,该文件夹为Archiva中内置的Derby数据库
  • 修改Derby数据库中的值

Archiva中的users文件夹很好找,找到Archiva使用的db文件夹

  • ~/Archiva/db

下面通常会有两个文件夹

一个是Archiva,用在储存Archiva内的数据,包括Jar包描述、关系等等,为Derby数据库,另一个是users,用来储存Archiva的用户数据 只需要拉下users就可以了,另外记得备份一份,不要忘记备份(虽然伏地魔整个世界都备份了很多份结果还是挂了

Derby数据库是第一次接触,因为Archiva才知道有个叫Derby的数据库,可以去看看Derby的Wiki条目,内有相应的链接,可以链到很多页面上

希望有个图形化界面保证操作无误,找了个DbVisualizer,免费版的可以随意使用,支持很多(从没听说而且一看就很没用)的数据库

下载回来安装后就可以开始弄了,新建Connection,选No Wizard不要使用向导(使用向导让我转了很多圈)

然后在出现的Database Connection里面有这么个界面

  • Driver(JDBC)里面选JavaDB/Derby embedded
  • 选择你拖下来的users文件夹
  • 点Connect就连上了

在SA - TABLE层级下找到JDOUSER表,右键Open in Tab,再在Data里面就可以看到用户数据了

用这样的办法更新数据,剩下的就简单了,改吧

这个表里面比较关键的字段改成这样就可以用了, 前提是你密码要记得

  • COUNT_FAILED_LOGIN_ATTEMPTS = 0 // 登陆失败次数为0
  • LOCKED = N // 非锁定状态
  • PASSWORD_CHANGE_REQUIRED = N // 不需要再次修改密码
  • PERMANENT = Y // 永久生效
  • VALIDATED = Y // 已经验证

如果密码忘记了,而且可以注册新帐户的话,可以这样重置admin的密码

  • 注册一个新用户,密码要记得,比如111
  • 把新用户里面ENCODED_PASSWORD字段的内容复制到admin中
  • 然后按上修改admin的其他字段让账户可用
  • 使用新用户的密码登入admin账户中

经验教训:

  • 忘记公用的密码私下问几个人就可以,不要群里叫或者直接大声问, 避免账户被锁
  • 注册账户、忘记密码功能千万要有,不然蛋疼菊紧
  • 如果真忘记了密码而且万劫不复了,用这个8HwbBqOoF4sFuHqSn9gaWK6GmA3KAv52/PyHf3uN1r8=,明文密码为deployer321