当你打算合并的外部目录服务器(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. pandas练习(一)------ 了解数据

    探索Chipotle快餐数据 (相关数据见github) 步骤1 导入pandas库 import pandas as pd 步骤2 导入数据集 path1 = "./data/chipot ...

  2. mysql系统变量查询

    mysql系统变量包括全局变量(global)和会话变量(session),global变量对所有session生效,session变量包括global变量.mysql调优必然会涉及这些系统变量的调整 ...

  3. HCNP学习笔记之子网掩码的计算和划分详细

    0x00 子网掩码的计算 TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的.网间网规模的迅速扩展对IP地址模式的威胁并不是它不能保证主机地址的唯一性,而是会 ...

  4. Jquery 数组与字符串之间的转换

    var auth_list = []; $("input[name='auth_list']:checkbox").each(function () { if ($(this).a ...

  5. CentOS 7 怎样自动连接网络

    https://jingyan.baidu.com/article/19192ad8f7c320e53e570728.html

  6. 20145329 《网络对抗技术》浏览器MS11_050安全漏洞攻击

    两台虚拟机: kali ip:192.168.96.130 windows xp sp3(包含IE7)ip:192.168.96.128 1.在kali终端中开启msfconsole. 2.进入漏洞模 ...

  7. arm linux下编译库System.Net.Primitives.dll和System.Xml.XmlSerializer.dll

    1.环境: /home/jello # uname -aLinux  3.10.0 #2 SMP Mon Mar 6 17:52:09 CST 2017 armv7l GNU/Linux 2.获取mo ...

  8. [BZOJ1044][HAOI2008]木棍分割 二分 + 单调队列优化dp + 滚动数组优化dp

    Description 有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, 总共有n-1个连接处. 现在允许你最多砍断m个连接处, 砍完后n根木棍被分成了很多段,要求满足总长度最大的一段长 ...

  9. 3、CommonChunkPlugin提取公共js-以提取一个jquery为例

    cnpm install css-loader --save-dev    //css-loader 是将css打包进js cnpm install style-loader --save-dev   ...

  10. 【jdk源码分析】ArrayList的size()==0和isEmpty()

    先看结果 分析源码 [jdk源码解析]jdk8的ArrayList初始化长度为0 java的基本数据类型默认值 无参构造 size()方法 isEmpty()方法