我自己在VPS上使用Docker部署了一个Nexus3用于管理Nuget包。今天更新包的时候不知为何一直提示"Access denied",根据官方的解释是密码错误。于是我又尝试了多个密码和用户名,依旧无法登录,最后决定重置密码。然鹅,Nexus3并不提供重置密码的功能,怎么办呢?

本着“内事不决问老婆,外事不决问Google”的原则,开始搭梯子、上墙,最后还是在官网上找到了一个靠谱的答案,开始操作吧:

  1. 首先,使用终端连接到VPS。
  2. 输入命令docker exec -i -t {container name/id} /bin/bash进入Nexus3容器
  3. 输入cd ~进入到根目录
  4. 输入java -jar ./lib/support/nexus-orient-console.jar打开用于连接数据库的库
  5. 连接数据库connect plocal:../sonatype-work/nexus3/db/security admin admin
  6. 最后开始重置密码update user SET password="$shiro1$SHA-512$1024$NE+wqQq/TmjZMvfI7ENh/g==$V4yPw8T64UQ6GfJfxYq2hLsVrBY8D1v+bktfOxGdt4b/9BthpWPNUy/CBk6V9iA0nHpzYzJFWO8v/tZFtES8CA==" UPSERT WHERE id="admin"