【问题标题】:TeamCity forgotten admin password - where to look?TeamCity 忘记了管理员密码 - 去哪里看?
【发布时间】:2010-10-05 02:26:34
【问题描述】:

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

我对服务器有完全的 RDP 访问权限,所以那里没有问题。我们使用它才 2 个月,所以现在我忘记了我的登录信息 - 我常用的登录信息不起作用。

目前它是在没有数据库的情况下设置的,所以希望用户名只是在某个文件中,但到目前为止还没有找到它。

【问题讨论】:

  • 谢谢大家的回答。事实证明,有人记住了密码,我们无需求助于这些解决方案就进入了。我已经投票给大家以寻求帮助。
  • 当前最新的 Teamcity(版本 8)的最佳响应是最后一个,这里是永久链接 - stackoverflow.com/a/18735441/237858

标签: teamcity


【解决方案1】:

在 TeamCity 8 中,您可以以超级用户身份登录并通过这种方式更改密码。您只需使用一个空的用户名和最后一次出现在 logs\teamcity-server.log 文件中的“超级用户身份验证令牌”作为您的密码。

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

【讨论】:

  • 确保选择最后一个这样的令牌 - 日志文件中可能有 > 1
【解决方案2】:

如果这些都不起作用,请参阅http://sebastienlachance.com/post/Resetting-TeamCity-Password.aspx

打开命令提示符并转到 \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 username newpassword

【讨论】:

  • 我需要停止 teamcity 服务
  • 一个小提示,如果Teamcity是在Linux上运行的,你需要替换所有的“;”到类路径中的“:”。当然,您可以在路径中使用 java,不一定是“..\..\..\..\jre\bin\java.exe”,而且很可能您没有安装 java。跨度>
  • 如果您安装了“TeamCity 配置目录路径”以外的构建服务器:C:/Users//.BuildServer 您需要手动将构建服务器路径附加到上面的命令行。对我来说就是:D:\TeamCity\App\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 username newpassword d:\teamcity\.BuildServer
  • 在我的情况下它是 D:\TeamCity\Server\webapps\ROOT\WEB-INF\lib>..\..\..\..\jre\bin\java.exe - cp ser ver.jar;common-api.jar;commons-codec-1.3.jar;util.jar;hsqldb.jar ChangePassword user pwd d:\TeamCity\ServerConfig
  • 注意当您运行命令时以管理员身份打开命令提示符,您的 DataDirectory 可能是 C:\ProgramData\JetBrains\System\.. 花了我一天时间才把它弄好..so芯片在
【解决方案3】:

对于 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

在我的例子中,我的用户名是“admin”(我想我是在安装过程中设置的,但我不能确定)。

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

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

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)

以防这也让其他人感到困惑。

【讨论】:

【解决方案4】:

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

【讨论】:

  • 对于我的情况,这是最简单的。 windows下文件夹默认在C:\Users\\.BuildServer
  • @FPC 有趣。我已将您的评论包含在答案中以提高知名度。
  • 咳咳,回来删除我的评论,因为我最终重新安装以重置密码......我很抱歉,当时正处于项目引导程序的中间,现在才开始正常呼吸。再说一遍,我现在怀疑上述方法是否有效,如果@VonC 删除他对它的回复,我将删除它:(
  • @FPC 好的,我已将答案恢复为原始版本。
【解决方案5】:

超级用户直接网址:

http://servername:port/login.html?super=1

打开TeamCity日志文件夹(例C:盘:C:\TeamCity\logs):teamcity-server.log,找到key:“超级用户认证”

[2019-03-04 12:14:30,770]   INFO -   jetbrains.buildServer.SERVER - Super user authentication token: `8347518935696887114` (use empty username with the token as the password to access the server)

【讨论】:

    【解决方案6】:

    尝试以下方法:

    首先停止 TeamCity 服务(如果安装了构建代理,也会停止)。 接下来打开一个控制台,转到您的 java 目录并从那里运行以下命令:

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

    【讨论】:

      【解决方案7】:

      我刚刚使用 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
      

      尽管您需要将 C:\TeamCity 替换为您的安装所在的位置。

      【讨论】:

        【解决方案8】:

        如果这对其他人有帮助,在我的服务器上安装 TeamCity 的人将构建目录放在管理员配置文件下,而不是 C:\TeamCity。

        【讨论】:

          【解决方案9】:

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

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

          如果不正确,您将收到“找不到表”错误。

          如果您已运行 TeamCity,您将收到“数据库已在使用”错误。

          您还可以搜索 /logs/teamcity-server.log 以查看您是否创建了管理员、管理员或其他管理员用户名。

          【讨论】:

            【解决方案10】:

            对于可能像我刚刚做的那样在最初的答案多年后到达本文的每个人,都有一个内置的超级用户帐户,并且每次启动团队城市时都会重新生成密码,并且密码在日志中。您可以使用此超级用户登录和重置任何密码。超级简单。

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

            【讨论】:

            • 谢谢,在尝试了其他解决方案之后,这终于让我开始了
            【解决方案11】:

            TeamCity 始终使用一个数据库 - 如果您没有明确配置一个数据库,它是uses a HSQLDB database to store data internally

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

            您也许可以通过修改数据库来访问系统 - 但我建议先进行备份。

            第二个建议 - 给 JetBrains 的支持人员发一封电子邮件。甚至在我的工作场所大肆购买 TeamCity Enterprise 许可证之前,他们的支持就非常出色 - 快速、准确且乐于助人。

            【讨论】:

              【解决方案12】:

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

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

              不过,如果没有充分的理由不这样做,我会坚持使用其他人已经提到的 CLI 版本。

              【讨论】:

              • 在 MSSQL 和 TC 8.0 上工作,需要重启服务。
              【解决方案13】:

              第一点是,如果您注销登录屏幕,用户名“TCAdmin”已经填写,而它应该是“管理员”。 TCAdmin 是(我认为)默认版本 5 管理员用户的全名。将其更改为管理员,然后使用我认为解决了我的问题的密码。

              用于重置... 如果它在 TeamCity 版本 5 的 Windows XP 上帮助其他人,我的 .BuildServer 配置信息也在我当前登录的用户的文档和设置文件夹下。我也被塞巴斯蒂安上面的好答案中的 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
              

              【讨论】:

                【解决方案14】:
                1. 停止 teamcity
                2. 您应该将路径传递给您的构建服务器 例如如果您将构建服务器安装到目录“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

                【讨论】:

                  【解决方案15】:

                  更改用户密码:

                  关闭服务器

                  切换到/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 数据文件的默认路径,则可以跳过该选项:/.BuildServer

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

                  【讨论】:

                    【解决方案16】:

                    这对我有用。

                    关闭服务器服务

                    > 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)
                    

                    【讨论】:

                      【解决方案17】:

                      我们使用 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";
                      

                      【讨论】:

                        【解决方案18】:

                        或者,您可以使用 TeamCity 服务器日志并检索超级用户令牌。

                        使用令牌,转到 URL:http://(server):(port)/login.html?super=1

                        即:http://localhost:92/login.html?super=1

                        登录后,您始终可以创建新用户或重置相关帐户的密码。

                        【讨论】:

                          【解决方案19】:

                          我在同样的情况下通过并使用超级用户登录,请按照以下步骤操作:

                          1 - 在路径“XX:\TeamCity\logs”中的“teamcity-server.log”中获取Token;

                          2 - 使用 url 上的令牌访问和登录:“/login.html?super=1”;

                          更多信息:

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

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 2016-05-19
                            • 2017-01-21
                            • 2017-04-03
                            • 2014-04-29
                            • 2019-09-29
                            • 2016-11-01
                            • 2013-06-03
                            • 1970-01-01
                            相关资源
                            最近更新 更多