Docker Nexus3 重置 admin 密码

背景:因为人员离职,nexus3 admin 密码丢失

备份

因为 nexus3 已经使用 docker 运行了很长时间, docker 启动所带的参数早已丢失(docker-compose 是一个好东西)。我们可以通过 runlike 这个命令找回当时启动这个容器的命令。
通过 runlike 命令,找到本地持久化目录为 /nexus-data。备份 security 文件夹

cp -rf /nexus-data/db/security /root/

下载对应版本二进制包

本来按照网上资料和官网文档,通过 docker exec -it 进入容器里面开启 OrientDB控制台,但是我这边失败,报 java.io.FileNotFoundException: .orientdb_history (No such file or directory)

没找到原因,进而转其他方法,启了一台虚拟机,配置好 JDK,下载对应的二进制包, 我这边是 nexus-3.10.0-04-unix.tar.gz,把该软解压到 /usr/local/ 下并重命名文件夹为 nexus

cd /usr/local/nexus/bin
./nexus run &

# 这里会生成我们需要的 jar 包
cd /usr/local/
tar zcvf nexus_20210628.tgz nexus

# 把 nexus_20210628.tgz 上传到 nexus 服务器上

更新密码

把 nexus_20210628.tgz 解压到 /usr/local/

# 进入OrientDB控制台:
java -jar /usr/local/nexus/lib/support/nexus-orient-console.jar 

# 在控制台执行 (nexus-data 是本地持久化目录)
connect plocal:/nexus-data/db/security admin admin

# 重置密码为admin123:
update user SET password="$shiro1$SHA-512$1024$NE+wqQq/TmjZMvfI7ENh/g==$V4yPw8T64UQ6GfJfxYq2hLsVrBY8D1v+bktfOxGdt4b/9BthpWPNUy/CBk6V9iA0nHpzYzJFWO8v/tZFtES8CA==" UPSERT WHERE id="admin"

重启服务

# 确认目录权限是否一致
cd /nexus-data/db/security

# 这里的目录文件拥有者为 200,所以要把 root 权限的文件更改了
chown -R 200.200 /nexus-data/db/security

# 重启
docker restart nexus

验证

成功登陆后,不要忘了更改 admin 的密码

参考

https://support.sonatype.com/hc/en-us/articles/213467158-How-to-reset-a-forgotten-admin-password-in-Nexus-3-x
https://support.sonatype.com/hc/en-us/articles/115002930827-Accessing-the-OrientDB-Console

原文地址:https://www.cnblogs.com/klvchen/p/14944851.html