2013-03-08 24 views
1

我使用exauth与ejabberd我的用户进行身份验证,但我想使用MySQL来存储用户信息,例如组,名册等Ejabberd名册与MySQL

这里是我的配置。

{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?

我做错了什么?

+1

您是否创建了mysql数据库?你以前是否使用mnesia作为名单?如果是的话,你迁移的数据?最后一件事,你在ejabberd.cfg mod_roster_odbc中启用了吗? – user601836 2013-03-08 11:50:58

+0

@ user601836我该怎么做? {mod_roster_odbc,[]}是这样的? – 2013-03-08 12:24:55

+0

是的,加上禁用mod_odbc ...当然你需要所有的模块连接mysql所需的所有模块 – user601836 2013-03-08 13:18:18

回答

4

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 
+0

AFAIK身份验证方法不会影响ejabberd的排班 – user601836 2013-03-10 20:32:30

+0

您是对的。我误解了这个问题。更新了答案 – 2013-03-11 03:24:15

+0

谢谢,这看起来很有希望的答案。另外,你认为所有的* _odbc模块是否已经安装?或者我需要再次安装它们吗? 另外,当我运行MYSQL脚本时,我的MySql服务器不接受这个,“SET table_type = InnoDB;”所以我删除它并安装了其余的SQL命令,是否会正常工作?如果不是那么我该如何安装MySQL与innodb!对不起,这是另一个问题。但如果你能帮忙。 – 2013-03-12 17:13:38

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