【问题标题】:Ejabberd: Migrating Mnesia "passwd" table to MySQL "user" tableEjabberd:将 Mnesia “passwd”表迁移到 MySQL “user”表
【发布时间】:2018-09-13 02:56:05
【问题描述】:

我有一个(旧的)ejabberd 实例,它仍然使用“内部”作为身份验证方法。我安装了一个闪亮的新服务器(包括 MySQL),并计划尽快迁移到它。从那时起,我想避免使用 Mnesia 作为身份验证数据库。

由于我的用户密码仍然存储在 Mnesia 数据库中,我需要将它们导入到新服务器上的(新)MySQL 数据库中。我成功地转储了“passwd”表,它充满了这样的条目:

{passwd,{>,>},

{急停,>,

      <<"4Qiv9ygiMLlzeZXUG6Bpyhygtgr=">>,

      <<"dylctQFXYGXemMii1Pswe==">>,4096}}

为了能够正确地将这些条目导入 MySQL 数据库,我需要确定哪个字段对应于 MySQL 'users' 表中的哪个字段:

+----------------+--------------+------+-----+-------------------+-------+
| Field          | Type         | Null | Key | Default           | Extra |
+----------------+--------------+------+-----+-------------------+-------+
| username       | varchar(191) | NO   | PRI | NULL              |       |
| password       | text         | NO   |     | NULL              |       |
| serverkey      | varchar(64)  | NO   |     |                   |       |
| salt           | varchar(64)  | NO   |     |                   |       |
| iterationcount | int(11)      | NO   |     | 0                 |       |
| created_at     | timestamp    | NO   |     | CURRENT_TIMESTAMP |       |
+----------------+--------------+------+-----+-------------------+-------+
6 rows in set (0.00 sec)

我显然知道“用户名”字段是什么(我想我可以猜到“迭代计数”是什么),但我想确保以正确的顺序获取其他字段。

一句话:'password'、'serverkey'和'salt'字段存储在 ejabberd Mnesia DB 中的顺序是什么?我在哪里可以找到有关此的信息?也许在代码中?

请注意你们中间有抱负的黑客:我确实更改了值,使用随机字符生成器;)

【问题讨论】:

    标签: mysql ejabberd mnesia


    【解决方案1】:

    我用选项配置了 ejabberd 18.03

    auth_password_format: scram
    

    并创建了一个帐户。它的认证信息在Mnesia中是这样存储的:

    {passwd,{<<"user1">>,<<"localhost">>},
        {scram,<<"Eu9adR8M5NPIBoVKK917UKJQTtE=">>,
               <<"0mRs0DKWvb8C0/fcVmTRP2elKOA=">>,
               <<"UclT113AyXYlUAZgv3q0vA==">>,4096}}
    

    后来我使用以下命令将 Mnesia 导出到 SQL 文件:

    ejabberdctl export2sql localhost /tmp/localhost.sql
    

    结果文件包含这一行:

    INSERT INTO users(username, password, serverkey, salt, iterationcount)
    VALUES ('user1',
            'Eu9adR8M5NPIBoVKK917UKJQTtE=',
            '0mRs0DKWvb8C0/fcVmTRP2elKOA=',
            'UclT113AyXYlUAZgv3q0vA==', 4096);
    

    【讨论】:

    • 感谢巴德洛普!我很傻,没想到这个简单的技巧来解决它。
    猜你喜欢
    • 2023-03-11
    • 2011-06-06
    • 1970-01-01
    • 2017-01-21
    • 2014-09-03
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 2018-03-22
    相关资源
    最近更新 更多