J'ai besoin de récupérer/réinitialiser le mot de passe administrateur pour TeamCity de JetBrain.
J'ai un accès RDP complet au serveur, donc pas de problème. Cela fait juste 2 mois que nous l'utilisons, j'ai maintenant oublié mon identifiant - mes identifiants habituels ne fonctionnent pas.
Il est configuré sans base de données pour le moment, donc j'espérais que les noms d'utilisateurs seraient simplement dans un fichier quelque part, mais pas de chance de le trouver jusqu'à présent.
Si aucune de ces œuvres ne fonctionne, voir http://sebastienlachance.com/post/Resetting-TeamCity-Password.aspx .
Ouvrez une invite de commande et accédez au dossier\webapps\ROOT\WEB-INF\lib. Maintenant, tapez ce qui suit:
..\..\..\..\jre\bin\Java.exe -cp server.jar;common-api.jar;commons-codec-1.3.jar;util.jar;hsqldb.jar ChangePassword username newpassword
À partir de TeamCity 8, vous pouvez vous connecter en tant que super utilisateur et modifier le mot de passe de cette façon. Vous devez simplement utiliser un nom d'utilisateur vide et la dernière occurrence du "jeton d'authentification de super utilisateur" trouvé dans le fichier logs\teamcity-server.log comme mot de passe.
Veuillez consulter les informations suivantes pour plus d'informations:
Pour TeamCity 6.5.4
A partir d'une invite de commande dans le [dossier d'installation de 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
Mon nom d'utilisateur était 'admin' dans mon cas (je pense l'avoir défini lors de l'installation mais je ne peux pas en être sûr).
J'ai omis le chemin d'accès à l'argument TeamCity, il est assez intelligent pour utiliser le chemin correct (le mien était c:\utilisateurs\administrateur.BuildServer)
Lorsque j'ai fourni le (mauvais) chemin d'accès à TeamCity en argument, j'ai reçu ce message:
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)
Au cas où cela dérouterait aussi les autres.
Vous pouvez essayer de réinitialiser l'installation de TeamCity en supprimant le répertoire de données TeamCity (répertoire $/.BuildServer
par défaut).
Essayez ce qui suit:
Arrêtez d'abord le service TeamCity (arrêterait également l'agent de génération s'il est installé) . Ensuite, ouvrez une console, accédez à votre répertoire Java et exécutez la commande suivante:
Java.exe -cp server.jar; hsqldb.jar ChangePassword USERNAME PASSWORD "PATH_TO_YOUR_TEAMCITY_INSTALLATION".BuildServer
Je viens de subir cette douleur avec v5 EAP.
J'ai réussi à réinitialiser le mot de passe en exécutant:
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
Bien que vous deviez remplacer C:\TeamCity par l’emplacement de votre installation.
Spécifiquement pour TeamCity fonctionnant sur Tomcat sous Windows, il s'agira de C:\ProgramData\JetBrains\TeamCity.
Le répertoire spécifié comme dernier paramètre doit être votre répertoire de données (à rechercher dans /logs/teamcity-server.log).
Vous obtiendrez l'erreur «Table non trouvée» si vous ne l'avez pas correctement.
Vous obtiendrez une erreur «La base de données est déjà utilisée» si TeamCity est en cours d'exécution.
vous pouvez également rechercher /logs/teamcity-server.log pour savoir si vous avez créé un nom d'utilisateur admin, administrateur ou autre.
Au cas où cela aiderait quelqu'un, celui qui a installé TeamCity sur mon serveur a placé le répertoire de construction dans le profil de l'administrateur, pas dans C:\TeamCity.
Pour tous ceux qui peuvent arriver à cet article des années après la réponse originale comme je viens de le faire, il existe un compte super utilisateur intégré, le mot de passe est régénéré à chaque démarrage de la ville d'équipe et le mot de passe est consigné dans le journal. Vous pouvez utiliser ce super utilisateur pour vous connecter et réinitialiser les mots de passe. C'est super facile.
TeamCity utilise toujours une base de données - si vous n'en avez pas explicitement configurée, il utilise une base de données HSQLDB pour stocker des données en interne .
Lorsque vous utilisez une base de données externe, les informations utilisateur sont stockées dans cette base de données. Il semble donc assez probable que les informations utilisateur de votre cas le soient dans le système HSQLDB.
Vous pourrez peut-être accéder au système en utilisant la base de données, mais je vous suggèrerais de commencer par une sauvegarde.
Deuxième suggestion - envoyez un e-mail aux gars de l'assistance chez JetBrains. Même avant que mon lieu de travail n'obtienne une licence TeamCity Enterprise, leur assistance était excellente: rapide, précise et utile.
Voici ce qui a fonctionné pour moi.
Arrêter les services du serveur
> cd c:\TeamCity\webapps\ROOT\WEB-INF\lib>
puis
> ..\..\..\..\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\
Sans le chemin à la fin, cela échouerait avec:
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)
Le premier point est que si vous vous déconnectez de l'écran de connexion, le nom d'utilisateur 'TCAdmin' est déjà renseigné, alors qu'il devrait être 'administrateur'. TCAdmin est le nom complet de (je pense) l’administrateur par défaut de la version 5. Changer cela en administrateur puis utiliser le mot de passe, je pensais que le problème était résolu.
Pour réinitialiser ... Au cas où cela aiderait quelqu'un d'autre sur Windows XP sur la version 5 de TeamCity, mes informations de configuration .BuildServer se trouvaient également sous le dossier de paramètres et de documents de mon utilisateur actuellement connecté. De plus, j'ai été trébuché par un espace dans la liste des fichiers jar dans la bonne réponse de Sébastien ci-dessus.
J'ai donc changé pour ce répertoire dans une invite de commande:
c:\teamcity\webapps\ROOT\WEB-INF\lib
et puis cette ligne de commande (pour définir le mot de passe: Password1) a fonctionné pour moi:
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
Ce qui a donné la sortie:
Using TeamCity configuration directory path: C:/Documents and Settings/tamw/.BuildServer
Password changed successfuly
Avec TeamCity 5 utilisant MySQL (probablement d'autres versions et RDBM également, mais non testé), il est possible de mettre à jour le mot de passe directement via SQL:
mysql> update users set password = md5("mypass123") where username = "bob";
Néanmoins, je resterais avec les versions de la CLI déjà mentionnées par d'autres s'il n'y avait pas de bonne raison de ne pas le faire.
Nous utilisons Teamcity 7 avec MS SQL Server comme SGBD.
Pour réinitialiser votre mot de passe, vous pouvez utiliser la requête suivante:
UPDATE users SET password = LOWER(SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('md5','your_new_password')),3,32))
where username = "your_user_name";
........\jre\bin\Java.exe -cp serveur.jar; commun-api.jar; commons-codec-1.3.jar; util.jar; hsqldb.jar Nom d'utilisateur du mot de passe nouveau mot de passe nouveau: c. BuildServer
URL directe du super utilisateur:
http://servername:port/login.html?super=1
Ouvrir le dossier du journal TeamCity (Exemple C: lecteur: C:\TeamCity\logs): teamcity-server.log, recherchez la clé: "Authentification super utilisateur".
[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)
Je suis passé dans la même situation et je me suis connecté avec le super utilisateur, suivez les étapes ci-dessous:
1 - Obtenez le jeton dans "teamcity-server.log" dans le chemin "XX:\TeamCity\logs";
2 - Accéder et se connecter en utilisant un jeton à l’URL: "/login.html?super=1";
Plus à ce sujet:
Pour changer le mot de passe de l'utilisateur:
Serveur d'arrêt
Basculez vers le répertoire/webapps/ROOT/WEB-INF/lib.
Invoquez la commande suivante:
Plate-forme Windows: Java -cp serveur.jar; common-api.jar; commons-codec-1.3.jar; util.jar; hsqldb.jar ChangePassword
Plateforme Unix: Java -cp serveur.jar: common-api.jar: commons-codec-1.3.jar: util.jar: hsqldb.jar ChangePassword
Si vous utilisez le chemin par défaut pour les fichiers de données TeamCity, vous pouvez ignorer cette option: /.BuildServer
[Ref: http://confluence.jetbrains.com/display/TCD7/Changing+user+password+with+default+authentication+scheme]
Vous pouvez également utiliser le journal du serveur TeamCity et récupérer le jeton de super utilisateur.
À l'aide du jeton, accédez à l'URL: http: // (serveur): (port) /login.html?super=1
c'est-à-dire: http: // localhost: 92/login.html? super = 1
Une fois connecté, vous pouvez toujours créer un nouvel utilisateur ou réinitialiser le mot de passe du compte en question.