最重要 "An existing user is already attached to your gitlab account"
Mattermost "An existing user is already attached to your gitlab account"
我们使用 Mattermost,使用 'Production Docker' 设置,如 Mattermost 文档中所述。对于身份验证,我们使用 GitHub:Enterprise 联合。
为了设置我们的 Mattermost 团队,我导入了整个 Slack 历史记录。这导致了所有尚未通过 GitHub:Enterprise 登录 Mattermost 的人都无法登录的问题。 Mattermost 很有帮助地返回了错误消息
"An existing user is already attached to your gitlab account"
如何解决这个问题而不必设置新的 Mattermost 实例并强制每个人在导入 Slack 数据之前登录一次?
先决条件
为了使其正常工作,您需要
- GitHub:Enterprise 管理员权限
- 在 Mattermost 机器上,root 权限或允许控制 docker 的帐户,并且,如果未安装 psql,安装 psql command-line 工具的方法。
步骤
ssh
进入 Mattermost vm/machine(其中 mattermost docker 容器是 运行)。
更改为具有 docker 权限的帐户(root;或您在 Mattermost 安装期间设置的帐户;或 ...)
使用docker ps
并记下容器mattermostdocker_db
的散列。我们假设它以 5c23
.
开头
运行docker inspect 5c23 | grep IPAddress
。记下容器的 IP 地址。我们假设它是 172.17.0.2
.
确保在 mattermost/docker 为 运行 的机器上安装了 psql 命令行工具。
- 在 debian 上:
apt-get install postgresql-client
连接到 docker 容器内最重要的 postgresql 运行 数据库:
psql -h 172.17.0.2 -p 5432 -d mattermost -U postgres -W
- (默认?)密码似乎是
postgres
。
验证是否存在具有正确电子邮件的用户帐户。假设有问题的帐户的电子邮件是 'john@example.com`
mattermost-# select email, authdata from users where email = 'john@example.com'
;
连接到 GitHub:Enterprise 并打开管理控制台。我们假设本地 github 企业实例位于 https://github.example.com
.
点击所有用户,找到无法登录的用户。我们假设 github 用户名是 john
,对应 https://github.example.com/john
访问该用户的 stafftools 用户安全页面。
点击'Audit logs'header下的'Search logs'link。这将打开一个带有查询字段的页面。在此页面上,您将找到该用户的内部 github 用户编号。记下这个数字。我们假设这个数字是 37。
返回 psql 控制台,用正确的数字更新用户条目:
update users set authservice = 'gitlab', authdata = '37' where email = 'john@example.com' ;
退出 psql 控制台 \q
:
mattermost-# \q
完成。用户现在可以使用 GitHub:Enterprise 用户身份验证登录 Mattermost。
备注
- 不要忘记用
;
完成 psql 中的每个语句
- 是
gitlab
,不是github
,即使你用GitHub:Enterprise
- 使用 Mattermost 3.0 测试,GitHub:Enterprise 2.6.2
我们使用 Mattermost,使用 'Production Docker' 设置,如 Mattermost 文档中所述。对于身份验证,我们使用 GitHub:Enterprise 联合。
为了设置我们的 Mattermost 团队,我导入了整个 Slack 历史记录。这导致了所有尚未通过 GitHub:Enterprise 登录 Mattermost 的人都无法登录的问题。 Mattermost 很有帮助地返回了错误消息
"An existing user is already attached to your gitlab account"
如何解决这个问题而不必设置新的 Mattermost 实例并强制每个人在导入 Slack 数据之前登录一次?
先决条件
为了使其正常工作,您需要
- GitHub:Enterprise 管理员权限
- 在 Mattermost 机器上,root 权限或允许控制 docker 的帐户,并且,如果未安装 psql,安装 psql command-line 工具的方法。
步骤
ssh
进入 Mattermost vm/machine(其中 mattermost docker 容器是 运行)。更改为具有 docker 权限的帐户(root;或您在 Mattermost 安装期间设置的帐户;或 ...)
使用
docker ps
并记下容器mattermostdocker_db
的散列。我们假设它以5c23
. 开头
运行
docker inspect 5c23 | grep IPAddress
。记下容器的 IP 地址。我们假设它是172.17.0.2
.确保在 mattermost/docker 为 运行 的机器上安装了 psql 命令行工具。
- 在 debian 上:
apt-get install postgresql-client
- 在 debian 上:
连接到 docker 容器内最重要的 postgresql 运行 数据库:
psql -h 172.17.0.2 -p 5432 -d mattermost -U postgres -W
- (默认?)密码似乎是
postgres
。
验证是否存在具有正确电子邮件的用户帐户。假设有问题的帐户的电子邮件是 'john@example.com`
mattermost-# select email, authdata from users where email = 'john@example.com'
;
连接到 GitHub:Enterprise 并打开管理控制台。我们假设本地 github 企业实例位于
https://github.example.com
.点击所有用户,找到无法登录的用户。我们假设 github 用户名是
john
,对应https://github.example.com/john
访问该用户的 stafftools 用户安全页面。
点击'Audit logs'header下的'Search logs'link。这将打开一个带有查询字段的页面。在此页面上,您将找到该用户的内部 github 用户编号。记下这个数字。我们假设这个数字是 37。
返回 psql 控制台,用正确的数字更新用户条目:
update users set authservice = 'gitlab', authdata = '37' where email = 'john@example.com' ;
退出 psql 控制台
\q
:mattermost-# \q
完成。用户现在可以使用 GitHub:Enterprise 用户身份验证登录 Mattermost。
备注
- 不要忘记用
;
完成 psql 中的每个语句
- 是
gitlab
,不是github
,即使你用GitHub:Enterprise - 使用 Mattermost 3.0 测试,GitHub:Enterprise 2.6.2