当你打算合并的外部目录服务器(Crowd 或 Jira 应用)有大量的用户到 Confluence 数据库中的时候,请使用这个选项。你需要有基本的 SQL 知识才能完成这个任务。

下面的 SQL 命令假设你使用的数据库为 MySQL 数据库。如果你使用的数据库不是 MySQL 数据库的话,你需要针对你使用的数据库对你的脚本进行一些修改后才能执行。

第 1 步. 创建备份

创建备份是在你对系统进行操作时候出现错误后恢复的唯一办法。

  1. 从 Confluence 中,你可以创建一个完整的 XML 站点备份包括所有的附件。
  2. 停止 Confluence。
  3. 将你服务器上的  Confluence home 和 安装目录中的所有文件和目录拷贝到系统的其他地方备份。
  4. 针对你的外部应用程序,重复上面的步骤。
  5. 从你的 MySQL 数据库管理工具中,为 Crowd/Jira 和 Confluence 都创建一个备份。

第 2 步. 替换 Confluence 用户管理

使用下面的 SQL 脚本备份外部应用程序中的用户和用户组到 Confluence 表中。下面的脚本是针对 MySQL 数据库设计运行的,如果你使用其他的数据库,你需要对脚本进行修改。

找到你目录使用的 ID
  1. 运行下面的脚本,然后对返回的结果数进行记录,这个 ID 将会在后面的 <Confluence Internal ID> 参数中引用。

    select id from cwd_directory where directory_name='Confluence Internal Directory';
  2. 针对用户目录关里界面,找到你希望移动的用户,用户组名字。运行下面的脚本,然后对返回的结果数进行记录,这个 ID 将会在后面的 <External Application ID> 参数中引用。
    select id from cwd_directory where directory_name='<External Directory Name>';
移动用户组到 Confluence
  1. 在你的内部目录中,外部目录的名字是相同情况是被允许的,希望找到这些名字,请运行下面的脚本:

    select distinct a.id, a.directory_id, a.group_name, d.directory_name from cwd_group a join cwd_group b on a.group_name=b.group_name join cwd_directory d on d.id=a.directory_id where a.directory_id != b.directory_id;
    1. 如果上面的脚本有返回插件结果,针对每一条记录表明的是名字出现了重复,在 Confluence 的内部目录中找到这些重复名字的 ID(<internal group id>)和外部应用(<external group id>)。运行下面的脚本:

      update cwd_group_attribute set group_id=<internal group id>, directory_id=<Confluence Internal Id> where group_id=<external group id>;
      update cwd_membership set child_group_id=<internal group id> where child_group_id=<external group id>;
      update cwd_membership set parent_id=<internal group id> where parent_id=<external group id>;
      delete from cwd_group where id=<external group id>;
  2. 移动所有外部应用中的所有组到 Confluence 内部目录中。
    update cwd_group set directory_id=<Confluence Internal ID> where directory_id=<External Application ID>;
移动用户到 Confluence
  1. 在内部目录中是允许有多个相同的用户名的,如果这些用户组在不同的外部应用目录中的话。找到这些用户,运行:

    select distinct a.id, a.directory_id, a.user_name, d.directory_name from cwd_user a join cwd_user b on a.user_name=b.user_name join cwd_directory d on d.id=a.directory_id where a.directory_id != b.directory_id;
    1. 如果上面的脚本返回了多条记录的话,表明的是你的系统中有多个用户具有相同的用户名在不同的外部目录中。在 Confluence 的内部目录中找到这些重复名字的 ID((<internal user id>)和外部应用(<external user id>)。运行下面的脚本:

      update cwd_membership set child_user_id=<internal user id> where child_user_id=<external user id>;
      update cwd_user_credential_record set user_id=<internal user id> where user_id=<external user id>;
      update cwd_user_attribute set user_id=<internal user id>, directory_id=<Confluence Internal ID> where user_id=<external user id>;
      delete from cwd_user where id=<external user id>;
  2. 移动所有外部应用中的所有用户到 Confluence 内部目录中。
    update cwd_user set directory_id=<Confluence Internal ID> where directory_id=<External Application ID>;
删除外部应用目录
  1. 你需要移动你的系统中的目录顺序,将内部用户目录移动到系统目录列表中的最顶端,然后激活它。
    1. 如果你仅仅有 2 个目录 - 内部和外部目录的删除可以用下面的脚本:

      update cwd_app_dir_mapping set list_index = 0 where directory_id = <Confluence Internal ID>;
    2. 如果你具有超过 2 个的用户目录,你需要将你的内部目录移动到顶部(list_index 0)需要删除的外部目录在这个目录的后面。
      • 列出所有用户的排序列表

        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 order by m.list_index;
      • 修改列表索引,这样这些目录将会按照你希望的顺序进行排序。用户目录的排序可以使用下面的方法进行重排序
        update cwd_app_dir_mapping set list_index = <position> where directory_id = <directory id>;
    3. 检查内部目录是否被启用。
      • 列出内部目录。一个被激活的目录将会在字段 'active' 中设置为 'T'

        select id, directory_name, active from cwd_directory where id = <Internal Directory id>;
      • 如果内部目录不是激活的,请激活它
        update cwd_directory set active = 'T' where id = <Internal Directory id>;
  2. 当所有的目录排序是正确的话,从目录列表中删除外部应用目录:
    delete from cwd_app_dir_operation where app_dir_mapping_id = (select id from cwd_app_dir_mapping where directory_id = <External Application ID>);
    delete from cwd_app_dir_mapping where directory_id = <External Application ID>;
  3. 如果被删除的外部目录在系统中与其他的表有约束的话,你需要根据这些约束从数据库中先删除其他表中的数据:
    delete from cwd_directory_attribute where directory_id=<External Application ID>;
    delete from cwd_directory_operation where directory_id=<External Application ID>;
  4. 所有引用的外部目录现在应该可以从系统中被删除了。使用下面的命令进行删除:
    delete from cwd_directory where id = <External Application ID>;
重置密码
  1. 所有在你删除的外部目录中的用户现在还不能登录系统,包括外部目录的管理员。这些用户需要先重置密码后才能登录系统。你可以通知你的用户使用登录页面的 忘记你的密码(Forgot your password)连接重置密码。可选的你可以使用Restore Passwords To Recover Admin User Rights页面的内容重置管理员的密码,然后通过管理员界面中的管理用户选项为你的用户重置密码。

https://www.cwiki.us/display/CONFLUENCEWIKI/Reverting+from+Crowd+or+JIRA+applications+to+Internal+User+Management

Confluence 6 选项 2 – 转移 Crowd/Jira 应用程序中的用户和用户组到 Confluence 数据库的更多相关文章

  1. 为用户管理连接 Confluence 6 到 Jira 应用程序

    请注意,在使用这个功能的时候,你的 Jira 应用许可证数量和 Confluence 的许可证数量不需要完全等同.例如,你可以通过 Jira 管理一个 50 个用户的 Confluence 许可证,尽 ...

  2. Atlassian 系列软件安装(Crowd+JIRA+Confluence+Bitbucket+Bamboo)

    公司使用的软件开发和协作工具为 Atlassian 系列软件,近期需要从腾讯云迁移到阿里云环境,简单记录下安装和配置过程.(Atlassian 的文档非常详尽,过程中碰见的问题都可以找到解决办法.) ...

  3. Confluence 6 选项 1 – 在 Confluence 中手动重建用户和用户组

    当你只有少量的用户和用户组的时候,使用这个方法. 使用 Confluence 的系统管理员登录 Confluence. 进入用户目录管理界面,然后移动 内部目录(internal directory) ...

  4. [原创] debian 9.3 搭建Jira+Confluence+Bitbucket项目管理工具(二) -- 安装jira 7.5.4

    [原创] debian 9.3 搭建Jira+Confluence+Bitbucket项目管理工具(二) -- 安装jira 7.5.4 环境都配置好以后, 开始搭建Jira的环境, 这里参考了一篇文 ...

  5. Confluence的简单安装以及与jira链接(Confluence不知道有没有破解)

    1. 前提是安装好了jira以及下载好了confluence的安装包 这里 jira的版本是 7.2.4 confluence的版本是6.8 2. 服务器上面有sqlserver数据库. 3. 为了便 ...

  6. SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错

    SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错 BP,试图创建一个新的vendor code, 角色是ZGM001, Grouping是G001, ...

  7. Confluence安装、汉化及jira整合

    今天上午装了一下Confluence,刚开始装的时候成功了,成功后进入数据库配置阶段,本人想把jira和confluence整合一起用,刚开始提示数据库连接问题,后来一直问题提示Connection ...

  8. 基于 Confluence 6 数据中心在你的 Atlassian 应用中配置 SAML 授权

    希望在 Confluence 中配置SAML: Go to  > 基本配置(General Configuration) > SAMl 授权(SAML Authentication). 选 ...

  9. JIRA安装过程中链接mysql的问题!

    测试下我使用的是mysql7.5的版本,JIRA是6.3.6!这是版本引起的问题! 服务器上原生的mysql驱动jar包:Mysql-connector-java-5.1.18-bin 可参考:htt ...

随机推荐

  1. linux查看文件夹大小,备份文件夹zip压缩解压

    linux查看文件夹大小,备份文件夹zip压缩解压 du -sh : 查看当前目录总共占的容量.而不单独列出各子项占用的容量 du -lh --max-depth=1 : 查看当前目录下一级子文件和子 ...

  2. web前端----响应式布局

    响应式开发 为什么要进行响应式开发? 随着移动设备的流行,网页设计必须要考虑到移动端的设计.同一个网站为了兼容PC端和移动端显示,就需要进行响应式开发. 什么是响应式? 利用媒体查询,让同一个网站兼容 ...

  3. NSDictionary打印编码改中文的方法

    1,转NSData NSData *jsonData = [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrett ...

  4. 短网址(short URL)系统的原理及其实现

    短网址(short URL)系统的原理及其实现 https://hufangyun.com/2017/short-url/?hmsr=toutiao.io&utm_medium=toutiao ...

  5. Python面试题之装饰器漫谈

    讲 Python 装饰器前,我想先举个例子,虽有点污,但跟装饰器这个话题很贴切. 每个人都有的内裤主要功能是用来遮羞,但是到了冬天它没法为我们防风御寒,咋办?我们想到的一个办法就是把内裤改造一下,让它 ...

  6. Python Web学习笔记之TCP、UDP、ICMP、IGMP的解释和区别

    TCP与UDP解释 TCP---传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据.TCP提供超时重发,丢弃重复数据, ...

  7. 前向算法Python实现

    前言 这里的前向算法与神经网络里的前向传播算法没有任何联系...这里的前向算法是自然语言处理领域隐马尔可夫模型第一个基本问题的算法. 前向算法是什么? 这里用一个海藻的例子来描述前向算法是什么.网上有 ...

  8. Android灯光系统--通知灯深入分析

    Android灯光系统--通知灯深入分析 通知的类别 声音 振动 闪灯 APP如何发出通知灯请求 getSystemService(获得通知服务) 构造notification 类别 其他参数(颜色, ...

  9. tensorflow拟合随机生成的三维数据【学习笔记】

    平台信息:PC:ubuntu18.04.i5.anaconda2.cuda9.0.cudnn7.0.5.tensorflow1.10.GTX1060 作者:庄泽彬(欢迎转载,请注明作者) 说明:感谢t ...

  10. luoguP2826 LJJ的数学课

    思路 把公式拆开维护两个值,一个a[i]的总和,一个a[i]*i的总和 也可以用树状数组维护,模板题 代码 #include <iostream> #include <vector& ...