Confluence 5 通过重置密码来获得管理员权限

  1. 云栖社区>
  2. 博客>
  3. 正文

Confluence 5 通过重置密码来获得管理员权限

honeymoose 2018-03-29 00:57:49 浏览987
展开阅读全文

本页中的内容:


如果你不能作为管理员登录 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>';

如果没有管理员账号

在你的本地内部目录中,有可能管理员账号不存在。如果是这种情况的话,你需要添加一个:

  1. 通过运行下面的 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');
  2. 通过下面的 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'));
  3. 将组成员添加到 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 :

  1. 关闭 Confluence
  2. 连接你的数据库
  3. 运行下面的 SQL:

    update cwd_user set credential =
    'x61Ey612Kl2gpFL56FT9weDnpSo4AV8j8+qx2AuTHdRyY036xxzTTrw10Wq3+4qQyB+XURPWx1ONxp3Y3pB37A=='
    where id=<id from Stage 1>;

第3步:将内部目录放置为第一位

启动 Confluence,然后尝试使用你在上面修改的用户名,或者是你新创建的用户名,登录密码是 'admin' 进行登录。

如果登录成功,那么你可以跳过第4步的操作了,如果还不成功说明你的内部目录还不是最高的优先级。

将内部目录放到系统第一位:

  1. 找到系统内部目录的名字和顺序:

    select d.id, d.directory_name, m.list_index from cwd_directory d join cwd_app_dir_mapping m on d.id=m.directory_id;
  2. 记录 Confluence  内部目录 list_index 0, 和 the list_index 和 ID 的 ID。
  3. 切换内部目录的顺序:

    update cwd_app_dir_mapping set list_index = 0 where directory_id = <Internal Directory id>;
    update cwd_app_dir_mapping set list_index = <Noted Internal Directory list_index> where directory_id = <Directory id that had list_index 0>;
  4. 检查内部目录是否是激活的('active' 字段应该标记为 'T'):

    select id, directory_name, active from cwd_directory where id = <Internal Directory id>;
  5. 如果必要的话,激活目录:

    update cwd_directory set active = 'T' where id = <Internal Directory id>;

第4步:清理

To tidy up:

  1. 启动 Confluence
  2. 使用你在上面修改的用户名,或者是你新创建的用户名,登录密码是 'admin' 进行登录
  3. 修改你的密码 password

    Don't leave your password as admin; if you do, your instance won't be secure.

  4. 如果你在第二步创建的是一个新的用户,在 UI 界面中在创建一个新的用户,并且删掉第2步创建的用。
  5. 如果你遵循第3步调整了用户目录,请到  > 基本配置(General Configuration) > 用户目录(User Directories)对用户目录进行重新调整,这样能够保证系统配置正确。

https://www.cwiki.us/pages/viewpage.action?pageId=33000234




网友评论

登录后评论
0/500
评论
honeymoose
+ 关注