Docker部署SonarQube:如何执行SQL重置Admin密码?
如何在SonarQube Docker容器中执行SQL重置Admin密码
我来帮你理清这个问题——在SonarQube Docker环境下重置Admin密码,关键要看你用的是默认内置H2数据库还是外部数据库(如MySQL/PostgreSQL),两种情况的操作路径完全不同:
情况1:使用SonarQube默认的内置H2数据库
SonarQube官方镜像自带了H2数据库的命令行工具,你不需要额外安装客户端,步骤如下:
- 先进入运行中的SonarQube容器:
docker exec -it <你的SonarQube容器ID/名称> bash - 启动H2的命令行Shell工具(容器里已经预装了Java,直接运行即可):
java -cp $SONARQUBE_HOME/lib/h2-*.jar org.h2.tools.Shell - 按照提示输入连接信息:
- JDBC URL:输入
jdbc:h2:file:$SONARQUBE_HOME/data/sonar(这是默认H2数据库文件的路径) - User:默认是
sonar - Password:默认也是
sonar
- JDBC URL:输入
- 连接成功后,直接执行你提到的SQL语句重置密码:
update users set crypted_password = '88c991e39bb88b94178123a849606905ebf440f5', salt='6522f3c5007ae910ad690bb1bdbf264a34884c6d' where login = 'admin'; - 执行完成后输入
exit退出H2 Shell,然后重启SonarQube容器使修改生效:
之后你就可以用docker restart <你的SonarQube容器ID/名称>admin/admin登录SonarQube了。
情况2:使用外部数据库(MySQL/PostgreSQL等)
如果你的SonarQube配置了外部数据库,那根本不需要在容器里操作,直接连接到你的外部数据库服务器执行SQL即可:
- 如果你用的是MySQL:用
mysql客户端连接到数据库主机,登录SonarQube对应的数据库(默认库名是sonar),然后执行上述SQL语句。 - 如果你用的是PostgreSQL:用
psql客户端连接到数据库,进入SonarQube的数据库后执行SQL。
小提示
如果你不确定自己用的是哪种数据库,可以查看容器内的SonarQube配置文件:
cat $SONARQUBE_HOME/conf/sonar.properties
找到sonar.jdbc.url配置项,里面会明确显示数据库类型和连接地址(比如jdbc:h2:...就是内置H2,jdbc:mysql:...就是外部MySQL)。
内容的提问来源于stack exchange,提问作者MMA
相关产品推荐
相关产品推荐

