我必须处理旧的CMDBUild,但不幸的是,没有人拥有超级用户密码。所以我想直接在postgres数据库中更改它。
我在psql中管理连接到cmdbuild数据库。我有一个表格用户,但select * from User;
只给了我:
current_user
--------------
postgres
(1 row)
但SELECT column_name FROM information_schema.columns WHERE table_name ='User';
为我提供了更多专栏:
column_name
-------------
Id
IdClass
Code
Description
Status
User
BeginDate
Notes
Username
Password
Email
(11 lignes)
所以第一个选择似乎错了,其他10个列在哪里? 此外,我在CMDBuild技术手册中找到了这些行,我试了但没有结果。
execute the following SQL commands to create the "Superuser" user (in the example with
username admin and password admin):
INSERT INTO "User" ("Status", "Username", "IdClass", "Password", "Description") VALUES ('A', 'admin',
'"User"', 'DQdKW32Mlms=', 'Administrator');
INSERT INTO "Role" ("Status", "IdClass", "Administrator", "Description") VALUES ('A', '"Role"', true,
'SuperUser');
INSERT INTO "Map_UserRole" ("Status", "IdClass2", "IdClass1", "IdObj2", "IdObj1", "IdDomain") VALUES ('A
有人可以帮我恢复或删除CMDBuild中的超级用户密码吗? 提前谢谢。
答案 0 :(得分:1)
听起来这个“CMDBuild”工具使用自己的用户表,而不是内置的PostgreSQL用户和角色。
在您执行任何其他操作之前,对数据库进行完整备份。
如果您想要恢复现有密码,您需要查明它是否已被盐渍化并散列或以纯文本形式存储。如果它以明文形式存储,请愤怒地指责CMDBuild开发人员,直到他们承诺在下一个版本中修复它。
如果它是明文,那么:
select "Username", "Password" from "User" where "Username" = 'admin';
如果使用生成的密码登录不起作用,那么它可能已经散列,在这种情况下,您需要确定使用的算法。按照上面的示例语句,它可能只是unix crypt。您可以将提取的密码放入文本文件中,并在其上运行Jack the Ripper或类似的破解工具。
如果你没有成功破解它,那么,如果你已经确定它是如何散列的,你可以散列一个新密码并用以下内容存储:
UPDATE "User" SET "Password" = "sdgfsdf" WHERE "Username" = 'admin';
用您生成的哈希替换上面的占位符文本。
(John the Ripper似乎不理解示例密码,这意味着它没有被删除或者没有像unix crypt那样的公认格式。)