带有 mysql 的 Ejabberd 花名册

Hit*_*shi 1 erlang xmpp ejabberd

我正在使用 ejabberd 的 exauth 来验证我的用户,但我想使用 mysql 来存储用户信息,例如 GROUPS、名册等。

这是我的配置。

{auth_method, external}.
{extauth_program, "/home/hitesh/ejabberd_auth.php"}.

{host_config, "subdomain.nodyssey.com", [{auth_method, [external, anonymous]}]}.

{odbc_server, {mysql, "localhost","ejabberd", "root", "root"}}.
Run Code Online (Sandbox Code Playgroud)

mysql 数据库是空的!用户在群聊中仍然有花名册和聊天记录,所以看起来正在使用 mnesia 数据库!我如何为此切换到 mysql?

我究竟做错了什么?

Chu*_* Ma 5

user601836 是正确的。我最初误解了这个问题。假设正确安装了 odbc 和 mysql 驱动程序,这里是更新的答案:

  1. 您是否创建了 mysql 表来存储名册数据等?您的所有 ejabberd 表都是使用 innodb 引擎创建的吗?您可以在 github 中获取架构:https : //github.com/processone/ejabberd/blob/2.1.x/src/odbc/mysql.sql。您也可以在 ejabberd 安装文件夹中找到它。我的在这个位置:ejabberd_installation_root/lib/ejabberd-2.1.11/priv/sql/mysql.sql。
  2. 使用 ejabberd.cfg 中的 *_odbc 替换相关模块名称。例如,将 mod_roster 替换为 mod_roster_odbc,将 mod_muc 替换为 mod_muc_odbc。此处列出了许多 odbc 支持的模块:
    ...
    {mod_offline_odbc, []},
    {mod_last_odbc, []},
    {mod_roster_odbc, []},
    {mod_shared_roster_odbc,[]},
    {mod_vcard_odbc, []},
    {mod_muc_odbc,[
      ...]},
    {mod_pubsub_odbc,[
      ...]},
    ...

详细的模块信息,查看官方文档:

https://git.process-one.net/ejabberd/mainline/blobs/raw/v2.1.11/doc/guide.html#modoverview
Run Code Online (Sandbox Code Playgroud)