Ejabberd与mysql的名单

时间:2013-03-08 11:24:31

标签: erlang xmpp ejabberd

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

这是我的配置。

{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数据库是EMPTY!用户在群聊时仍然有名册和聊天记录,所以看起来正在使用mnesia数据库!我如何为此切换到mysql?

我做错了什么?

2 个答案:

答案 0 :(得分:4)

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

  1. 您是否创建了mysql表来存储名册数据等?还有你使用innodb引擎创建的所有ejabberd表吗? 您可以在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, [
      ...]},
    ...
  3. 有关详细的模块信息,请查看官方文档:

    https://git.process-one.net/ejabberd/mainline/blobs/raw/v2.1.11/doc/guide.html#modoverview
    

答案 1 :(得分:0)

问这个问题已经有一段时间了。 Ejabberd配置文件同时发生了变化。要启用外部名册存储,假设配置了ejabberd和mysql DB和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