参考:
support.sonatype.com/hc/en-us/ar…
停止 nexus 服务
由于 nexus 是基于 docker 部署,后面我们需要进入容器中执行相关命令,所以此处不能直接使用
docker stop xxx
来关闭服务。需要进入到容器内部来关闭 nexus 服务。
docker exec -u root -it nexus3 /bin/bash
/opt/sonatype/nexus/bin/nexus stop
/opt/sonatype/nexus/bin/nexus status
说明:此处 docker 容器中 nexus 服务关闭的情况可能各不相同,此处找到了镜像原始 dockerfile,从中服务启动时执行的路径,推测出其关闭服务的命令。启动服务命令是 CMD ["/opt/sonatype/nexus/bin/nexus", "run"]
,则尝试使用 /opt/sonatype/nexus/bin/nexus stop
来关闭服务。
参考: github.com/sonatype/do…
进入 OrientDB 控制台
java -jar $NEXUS_HOME/lib/support/nexus-orient-console.jar
需要根据 nexus 各自的安装情况执行上述命令。
参考: support.sonatype.com/hc/en-us/ar…
进入数据库
ls -alh nexus-data/db/security
connect plocal:nexus-data/db/security admin admin
调整 admin 账号密码
select * from user where id = "admin"
update user SET password="$shiro1$SHA-512$1024$NE+wqQq/TmjZMvfI7ENh/g==$V4yPw8T64UQ6GfJfxYq2hLsVrBY8D1v+bktfOxGdt4b/9BthpWPNUy/CBk6V9iA0nHpzYzJFWO8v/tZFtES8CA==" UPSERT WHERE id="admin"
注意:为了方便,此处先临时将密码更新为 admin123
。
若要退出 OrientDB 控制台,输入 exit;
即可退出。
orientdb {db=security}> exit
恢复 nexus 服务
/opt/sonatype/nexus/bin/nexus start
/opt/sonatype/nexus/bin/nexus status
使用 admin:admin123
帐密来登录 nexus 服务,验证是否调整正确。若确认调整成功,建议及时使用更复杂的密码替换临时密码 admin123
。
报没有权限
Error creating history file java.io.IOException: Permission denied at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:1012) at
一开始使用 docker exec -it nexus3 /bin/bash
进入容器,执行进行 OrientDB 命令时,会报无权限,且无法使用 sudo su
切换用户。使用 docker exec -u root -it nexus3 /bin/bash
即可。
参考: gist.github.com/marcelmaatk…
How to reset a forgotten admin password in Sonatype Nexus Repository 3
Nexus3.X忘记admin密码找回