如果你不能作为管理员登录 Confluence (例如,你弄丢了你的管理员密码),你可以以恢复模式启动 Confluence 来恢复你的管理员用户权限。 如果你使用的是下面的方式,那么这个指南可能并不适用你: Confluence 被配置通过使用 Crowd 来 SSO。 这个指南只覆盖了如何从 Confluence 内部目录中重置管理员用户密码。如果你启用了 Crowd SSO,你就不能通过这个方法重置你的系统管理员密码。请参考 Integrating Crowd with Atlassian Confluence 页面的内容来获取如何启用和禁用 Crowd SSO。 你正在使用 Confluence 3.4 或更早的版本。 请参考操作的版本 OSUser 或者 AtlassianUser。 如果你还在使用早期的版本的话,我们建议你尽快升级。 在开始之前 下面的步骤我们是在示例数据库上进行操作的,应该也能够在 MySQL 和 PostgreSQL 上正确配置。你可能需要针对你安装数据库的不同进行一些 SQL 的调整。 我们强烈推荐你在正式运行的数据库上进行任何 SQL 操作之前先在测试数据库上先运行和测试。 如果你知道你的管理员用户名,并且这个管理员的邮件地址是有效的,同时你的系统也正确配置了邮件服务器的话。你可以使用界面的重置用户密码链接进行对你管理员账号的密码进行重置。 系统将会向你的管理员账号下发送一个重置密码的链接。 获得数据库的访问权限 如果你使用默认安装嵌入的 H2 数据库,你可以在 <confluence-home-directory>/database 中找到你的额数据库文件。查看 通过重置密码来获得管理员权限 来获得更多的信息。 如果你使用的是外部生产数据库,你可以使用你常用的工具连接这些外部数据库。你需要具有这些数据库的查询和更新权限。 第一步:确定管理员 希望找到那些用户具有管理员权限,你需要连接你的数据库。你可以使用一些数据库工具例如 DBVisualiser。 如果你的系统还没有安装这些工具,你需要首先进行下载和安装,然后在数据库管理工具中运行下面的 SQL 来获得你的管理员用户名和 ID。 select u.id, u.user_name, u.active from cwd_user u join cwd_membership m on u.id=m.child_user_id join cwd_group g on m.parent_id=g.id join cwd_directory d on d.id=g.directory_id where g.group_name = 'confluence-administrators'and d.directory_name='Confluence Internal Directory'; 如果返回的结果有多条记录的话,选择一个ID/username 组合,然后继续下面的操作。、 如果返回的结果没有任何记录,请直接进入步骤: If No Local Administrator Exists. 同时请确定 active 字段的值为 "T",如果没有这个标志位的话,重置用户密码的操作是不会成功的。 你可以使用下面的 SQL 来将这个标志位设置为 T,你可以用你的用户名来替换掉 SQL 中的 "<user_name>" 内容。 UPDATE cwd_user SET active = 'T' WHERE user_name ='<user_name>'; 如果没有管理员账号 在你的本地内部目录中,有可能管理员账号不存在。如果是这种情况的话,你需要添加一个: 通过运行下面的 SQL 来添加一个管理员账号: insert into cwd_user(id, user_name, lower_user_name, active, created_date, updated_date, first_name, lower_first_name, last_name, lower_last_name, display_name, lower_display_name, email_address, lower_email_address, directory_id, credential) values (1212121, 'admin', 'admin', 'T', '2009-11-26 17:42:08', '2009-11-26 17:42:08', 'A. D.', 'a. d.', 'Ministrator', 'ministrator', 'A. D. Ministrator', 'a. d. ministrator', 'admin@example.com', 'admin@example.com', (select id from cwd_directory where directory_name='Confluence Internal Directory'), 'x61Ey612Kl2gpFL56FT9weDnpSo4AV8j8+qx2AuTHdRyY036xxzTTrw10Wq3+4qQyB+XURPWx1ONxp3Y3pB37A=='); insert into user_mapping values ('2c9681954172cf560000000000000001', 'admin', 'admin'); 通过下面的 SQL 来将这个账号添加到管理员用户组: insert into cwd_group(id, group_name, lower_group_name, active, local, created_date, updated_date, description, group_type, directory_id) values ( '888888','confluence-administrators','confluence-administrators','T','F','2011-03-21 12:20:29','2011-03-21 12:20:29',NULL,'GROUP',(select id from cwd_directory where directory_name='Confluence Internal Directory')); insert into cwd_group(id, group_name, lower_group_name, active, local, created_date, updated_date, description, group_type, directory_id) values ( '999999','confluence-users','confluence-users','T','F','2011-03-21 12:20:29','2011-03-21 12:20:29',NULL,'GROUP',(select id from cwd_directory where directory_name='Confluence Internal Directory')); 将组成员添加到 cwd_membership: insert into cwd_membership (id, parent_id, child_user_id) values (888888, (select id from cwd_group where group_name='confluence-users'and directory_id=(select id from cwd_directory where directory_name='Confluence Internal Directory')), 1212121); insert into cwd_membership (id, parent_id, child_user_id) values (999999, (select id from cwd_group where group_name='confluence-administrators'and directory_id=(select id from cwd_directory where directory_name='Confluence Internal Directory')), 1212121); 如果你使用的是 Oracle 数据库,使用 sysdate 来替换掉 created_date 字段名。 第2步:替换管理员密码 Confluence 不会在数据库中保存文本格式的密码,所保存的密码都是加密后的哈希字符串。你需要在数据库中插入加密后的哈希字符串而不是原始的文本数据。 下面的数码是密码:admin,加密后的哈希字符串(对字符 admin 进行哈希)。 x61Ey612Kl2gpFL56FT9weDnpSo4AV8j8+qx2AuTHdRyY036xxzTTrw10Wq3+4qQyB+XURPWx1ONxp3Y3pB37A== 希望修改制定用户的密码为 admin : 关闭 Confluence 连接你的数据库 运行下面的 SQL:…