【问题标题】:How to connect ejabberd with mysql on ubuntu?如何在 ubuntu 上将 ejabberd 与 mysql 连接?
【发布时间】:2013-12-17 13:02:18
【问题描述】:

我已经在我的本地主机(WAMP)上安装了 ejabberd 并且它在 Mnesia 数据库(默认)上正常工作,现在我想将它与 mysql 连接但无法做到。 我尝试了很多链接,例如, 首先使用 ejabberd 模式创建一个数据库 ejabberd,然后 1. 注释行,

From {auth_method, internal}.
To %%{auth_method, internal}.

之后,

FROM %%{auth_method, odbc}.
To 
{auth_method, odbc}.

那么,

%%
%% MySQL server:
%%
{odbc_server, {mysql, "localhost", "ejabberd", "root", "MyPassword"}}.

最后在一些模块中添加了_odbc

{mod_last_odbc,     []},
{mod_offline_odbc,  []},
{mod_privacy_odbc,  []},
{mod_private_odbc,  []},
{mod_pubsub_odbc,   [ % requires mod_caps ...
{mod_roster_odbc,   []},
{mod_vcard_odbc,    []},

但是在这些步骤无法启动 ejabberd 服务器之后,我尝试了很多次,但一直需要重新安装 ejabberd,即使进程回滚也不起作用。 您的帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: mysql xmpp ejabberd


    【解决方案1】:

    步骤 1) 创建数据库 ejabberd


    第 2 步)将 this 架构导入 ejabberd 数据库


    第 3 步)打开您的配置文件(ejabberd.cfg)并进行以下更改

    来自 {auth_method, internal}。 到 %%{auth_method, internal}。 之后,

    FROM %%{auth_method, odbc}.
    To 
    {auth_method, odbc}.
    then,
    
    %%
    %% MySQL server:
    %%
    {odbc_server, {mysql, "localhost", "ejabberd", "root", "MyPassword"}}.
    

    将 mod_last 更改为 mod_last_odbc

    将 mod_offline 更改为 mod_offline_odbc

    将 mod_roster 更改为 mod_roster_odbc

    将 mod_private 更改为 mod_private_odbc

    将 mod_privacy 更改为 mod_privacy_odbc

    将 mod_pubsub 更改为 mod_pubsub_odbc

    将 mod_vcard 更改为 mod_vcard_odbc


    第 4 步)这是大多数人摸索的地方。安装 Erlang-Mysql 驱动程序:http://svn.process-one.net/ejabberd-modules/mysql/trunk/

    如果所有其他 ejabberd 梁文件都已复制,您可以将它们复制到同一目录:/usr/lib/ejabberd/ebin/


    第 5 步)重启 ejabberd。

    就是这样。

    来源:

    https://www.ejabberd.im/Using%20ejabberd%20with%20MySQL%20native%20driver

    https://www.ejabberd.im/node/4125

    http://srijan.me/ejabberd-storing-data-in-mysql/

    【讨论】:

    • 安装后,我访问服务器,这是我看到的。 imgur.com/j4RcxWr 可以吗,有什么建议吗? @jayesh-jain
    • 如果使用的数据库不是内部 Mnesia 数据库,ejabberd Web 控制台不会显示用户。
    • 第 4 步的链接是否仍然相关?我们可以改用this 吗?
    • @JeelShah as step 4 链接现在失效了,你是如何用 mysql 配置 ejabberd 的?
    • @rigal 你知道如何解决你的问题吗?这么晚才回复很抱歉。和我建立一个私人聊天 - 我不介意指导你。这个过程可能很漫长。
    【解决方案2】:

    我遵循本指南,并且能够正常启动服务器。当我使用 $sudo ejabberdctl register user_1 localhost user_1 我得到“用户 user_1@localhost 注册成功”

    然而,当我去数据库时,“select * from users”,我没有看到任何记录,我也查询了所有的表,没有看到任何数据,都是空的。虽然我可以在 Pidgin 等 XMPP 客户端中通过 user_1/user_1 登录,但有什么建议吗?

    谢谢

    【讨论】:

      【解决方案3】:

      你能发布你的日志语句来看看到底是什么失败了吗?我认为您可能需要使用 --enable-odbc 选项重建 ejabberd。

      【讨论】:

      • 嗨 Chrisyunker,抱歉回复晚了,无法生成日志文件,你能帮帮我吗?
      • 在 ejabberd.cfg 中将 loglevel 设置为 5(调试):{loglevel, 5}。重新启动 ejabberd。将 ./var/log/ejabberd/ejabberd.log 的内容发布到 gist 并分享链接。
      • =ERROR REPORT==== 2014-01-10 18:20:09 === C(:ejabberd_check:63) :ejabberd 配置为使用“mysql”,但未安装以下 Erlang 模块:'[mysql, mysql_auth, mysql_conn, mysql_recv]'
      • 所以看起来您已配置为使用 mysql,但没有安装库。您需要从其他来源获取这些信息。检查此链接:github.com/processone/mysql(我看到他们添加了 p1_ 前缀,因此您必须更新相应引用它的 ejabberd 源代码)
      猜你喜欢
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      • 2021-03-16
      • 2016-04-16
      • 1970-01-01
      • 2014-02-02
      相关资源
      最近更新 更多