# 問題背景 nexus3 的 admin 賬號密碼忘記了,需要重置。 # 環境說明 ``` nexus 基於 docker-compose 部署,版本 nexus3.26 docker 鏡像 sonatype/nexus3:3.26.1 ``` # 操作步驟 參考: https://support ...
問題背景
nexus3 的 admin 賬號密碼忘記了,需要重置。
環境說明
nexus 基於 docker-compose 部署,版本 nexus3.26
docker 鏡像 sonatype/nexus3:3.26.1
操作步驟
停止 nexus 服務
由於 nexus 是基於 docker 部署,後面我們需要進入容器中執行相關命令,所以此處不能直接使用 docker stop xxx
來關閉服務。需要進入到容器內部來關閉 nexus 服務。
# 進入 docker 容器內,註意,此處使用 root 用戶,否則後續命令會無許可權
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
來關閉服務。
參考: https://github.com/sonatype/docker-nexus3/blob/main/Dockerfile
進入 OrientDB 控制台
java -jar $NEXUS_HOME/lib/support/nexus-orient-console.jar
需要根據 nexus 各自的安裝情況執行上述命令。
參考: https://support.sonatype.com/hc/en-us/articles/115002930827-Accessing-the-OrientDB-Console
進入資料庫
# 查看 db 目錄,根據實際情況查找到目錄
ls -alh nexus-data/db/security
# 連接資料庫,此處 `nexus-data/db/security` 根據實際 db 目錄進行調整
connect plocal:nexus-data/db/security admin admin
調整 admin 賬號密碼
# 查看 admin 用戶信息
select * from user where id = "admin"
# 更新 admin 用戶的密碼為 admin123
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
即可。
參考: https://gist.github.com/marcelmaatkamp/123e8793e07a72a382d8d0e8d66bbd8f?permalink_comment_id=3276537
文檔參考
How to reset a forgotten admin password in Sonatype Nexus Repository 3
Nexus3.X忘記admin密碼找回
更多技術文章,請關註我的個人博客 www.immaxfang.com 和小公眾號
Max的技術札記
。