TeamCity忘记了pipe理密码 – 在哪里看?

我需要恢复/重置JetBrain TeamCity的pipe理员密码。

我有完整的RDP访问服务器,所以没有问题。 我们使用它仅仅2个月,所以现在我已经忘记了我的login名 – 我通常的login名不起作用。

目前没有数据库设置,所以希望用户名只能在某个文件中,但没有运气find它。

如果没有这些作品,请参阅http://sebastienlachance.com/post/Resetting-TeamCity-Password.aspx

打开命令提示符并转到\ webapps \ ROOT \ WEB-INF \ lib文件夹。 现在input以下内容:

..\..\..\..\jre\bin\java.exe -cp server.jar;common-api.jar;commons-codec-1.3.jar;util.jar;hsqldb.jar ChangePassword username newpassword 

从TeamCity 8开始,您可以以超级用户身份login,并以此方式更改密码。 您只需要使用一个空的用户名和最后一次出现在logs \ teamcity-server.log文件中的“超级用户身份validation令牌”作为您的密码。

请参阅以下内容了解更多信息:

对于TeamCity 6.5.4

从[TeamCity安装文件夹] \ webapps \ ROOT \ WEB-INF \ lib中的命令提示符下:

 ..\..\..\..\jre\bin\java -cp server.jar;common-api.jar;commons-codec-1.3.jar;util.jar;hsqldb.jar ChangePassword admin NewPassword 

我的用户名是'pipe理员'在我的情况(我想我在安装过程中设置,但我不能确定)。

我省略了TeamCity参数的path,使用正确的path足够聪明(我的是c:\ users \ administrator.BuildServer)

当我向TeamCity提供了(错误的)path作为参数时,我收到了这条消息:

 Using TeamCity configuration directory path: c:/TeamCity/.BuildServer Exception in thread "main" java.sql.SQLException: Table not found in statement [UPDATE users SET PASSWORD = ? WHERE USERNAME = ? AND REALM IS NULL] at org.hsqldb.jdbc.Util.throwError(Util.java:58) at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(jdbcPreparedStatement.java:1833) at org.hsqldb.jdbc.jdbcConnection.prepareStatement(jdbcConnection.java:580) at ChangePassword.main(ChangePassword.java:14) 

如果这也让其他人感到困惑。

您可以尝试通过删除TeamCity数据目录(默认$/.BuildServer目录)来重置TeamCity的安装$/.BuildServer

尝试以下操作:

首先停止TeamCity服务(如果安装,也会停止构build代理)。 接下来打开一个控制台,进入你的java目录并从那里运行下面的命令:

 java.exe -cp server.jar; hsqldb.jar ChangePassword USERNAME PASSWORD "PATH_TO_YOUR_TEAMCITY_INSTALLATION".BuildServer 

我只需要用v5 EAP来解决这个问题。

我设法通过运行成功地重置密码:

 C:\TeamCity\webapps\ROOT\WEB-INF\lib>..\..\..\..\jre\bin\java -cp server.jar;common-api.jar;commons-codec-1.3.jar;util.jar;hsqldb.jar ChangePassword admin password c:\TeamCity\.BuildServer 

尽pipe您需要将C:\ TeamCityreplace为安装位置。

如果这有助于其他人,在我的服务器上安装TeamCity的人将构build目录放在pipe理员configuration文件下,而不是C:\ TeamCity中。

TeamCity总是使用一个数据库 – 如果你没有明确地configuration一个数据库 ,它会使用一个HSQLDB数据库在内部存储数据 。

当使用外部数据库时,用户信息存储在该数据库中,因此您案例中的用户信息很可能会存储在HSQLDB系统中。

你可以通过与数据库进行交stream来访问系统,但我build议先进行备份。

第二个build议 – 把支持人员放在JetBrains的电子邮件中。 即使在我的工作场所出现TeamCity Enterprise许可证之前,他们的支持也非常出色 – 快速,准确和有帮助。

使用MySQL的TeamCity 5(可能还有其他版本和RDBM,但未经testing),可以直接通过SQL更新密码:

 mysql> update users set password = md5("mypass123") where username = "bob"; 

不过,如果没有好的理由不这样做,我会坚持已经提到的CLI版本。

首先,如果您注销login屏幕,那么用户名“TCAdmin”已经填写,当它是“pipe理员”时。 TCAdmin是(我认为)默认版本5pipe理员用户的全名。 将其更改为pipe理员,然后使用密码,我认为这是解决了我的问题。

重置…如果TeamCity版本5上的Windows XP上的其他人帮助其他人,我的.BuildServerconfiguration信息也在我当前login的用户的文档和设置文件夹下。 在Sebastien上面的很好的答案中,我也被jar文件列表中的一个空格绊倒了。

所以我在命令提示符下改为这个目录:

  c:\teamcity\webapps\ROOT\WEB-INF\lib 

然后这个命令行(设置密码:Password1)为我工作:

 C:\TeamCity\webapps\ROOT\WEB-INF\lib>..\..\..\..\jre\bin\java.exe -cp server.jar;commonapi.jar;commons-codec-1.3.jar;util.jar;hsqldb.jar ChangePassword administrator Password1 

哪个给了输出:

 Using TeamCity configuration directory path: C:/Documents and Settings/tamw/.BuildServer Password changed successfuly 
  1. 停止teamcity
  2. 你应该传递你的buildserver的path,例如,如果你安装了生成服务器到目录“c:\。BuildServer”

…….. \ jre \ bin \ java.exe -cp server.jar; common-api.jar; commons-codec-1.3.jar; util.jar; hsqldb.jar ChangePassword username newpassword c:\。 BuildServer

这是为我工作的。

closures服务器服务

 > cd c:\TeamCity\webapps\ROOT\WEB-INF\lib> 

然后

 > ..\..\..\..\jre\bin\java.exe -cp server.jar ;common-api.jar;commons-codec-1.3.jar;util.jar;hsqldb.jar ChangePassword admin password1 C:\ProgramData\JetBrains\TeamCity\ 

如果没有最后的道路,将会失败:

 Exception in thread "main" java.sql.SQLException: Table not found in statement [ UPDATE users SET PASSWORD = ? WHERE USERNAME = ? AND REALM IS NULL] at org.hsqldb.jdbc.Util.throwError(Util.java:58) at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(jdbcPreparedStatement.ja va:1833) at org.hsqldb.jdbc.jdbcConnection.prepareStatement(jdbcConnection.java:5 80) at ChangePassword.main(ChangePassword.java:14) 

特别是在Windows上的Tomcat上运行的TeamCity,它将是C:\ ProgramData \ JetBrains \ TeamCity

指定为最后一个参数的目录需要是数据目录(位于/logs/teamcity-server.log中)

如果你没有这个正确的话,你会得到'表未find'的错误。

如果你有TeamCity的运行,你会得到一个'数据库已经被使用'的错误。

您还可以search/logs/teamcity-server.log查看您是否创build了pipe理员,pipe理员或其他pipe理员用户名。

我们使用TeamCity 7和MS SQL Server作为RDBMS。

要重置您的密码,您可以使用以下查询:

 UPDATE users SET password = LOWER(SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('md5','your_new_password')),3,32)) where username = "your_user_name"; 

对于像我刚才那样在原来的答案后可能到达这篇文章的每个人,都有一个内置的超级用户帐户,密码每次启动时都会重新生成,并且密码在日志中。 您可以使用此超级用户login并重置任何密码。 这很容易。

https://confluence.jetbrains.com/display/TCD9/Super+User

要更改用户密码:

关机服务器

切换到/ webapps / ROOT / WEB-INF / lib目录

调用以下命令:

Windows平台:java -cp server.jar; common-api.jar; commons-codec-1.3.jar; util.jar; hsqldb.jar ChangePassword

Unix平台:java -cp server.jar:common-api.jar:commons-codec-1.3.jar:util.jar:hsqldb.jar ChangePassword

如果您使用TeamCity数据文件的默认path,则可以跳过该选项:/.BuildServer

[参考:http://confluence.jetbrains.com/display/TCD7/Changing+user+password+with+default+authentication+scheme]