1

我正在使用带有 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"}}.

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

我究竟做错了什么?

4

2 回答 2

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
于 2013-03-10T18:05:46.583 回答
0

自从提出这个问题以来已经有一段时间了。同时,Ejabberd 配置文件已更改。要启用外部名册存储,假设配置了 ejabberd 和 mysql 数据库和 ejabberd 模式,您在 ejabberd.yml 中要做的就是:

sql_type: mysql
sql_server: "localhost"
sql_database: "some_database_name"
sql_username: "some_username"
sql_password: "some_password"

并改变mod_roster: {}

mod_roster:
   db_type: sql
于 2017-05-19T16:14:26.120 回答