如何查看ejabberd的Mnesia数据库

时间:2015-04-08 13:10:58

标签: ejabberd mnesia

我想访问ejabberd服务器的Mnesia数据库,但我不知道如何读取,写入和更新数据,有没有办法可以做到这一点。 我可以将数据库更改为MySQL而不是Mnesia。 我试过这个

{odbc_server, {mysql, "localhost", "xmpp_db", "root", "**********"}}. 

这里“xmpp_db”是我为ejabberd创建的数据库的名称,但是我没有看到xmpp_db的任何变化。 我应该在“xmpp_db”中创建任何表,但问题是我的表和字段的名称是什么。 我也用过

ejabberdctl dump /tmp/ejabberd.db.txt 

命令,但这只是为了读取数据(数据格式非常粗糙,难以理解)。有什么方法可以在Mnesia数据库上执行读,写和更新操作。

您的帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

你确实可以使用MySQL。如文档中所述,您需要配置MySQL连接并确定将使用它的模块。

您可以在此处阅读文档:http://docs.ejabberd.im/admin/guide/configuration/#database-and-ldap-configuration

他们需要为相关模块配置后端/方法。例如,要进行身份验证,您需要将auth_method设置为odbc:

auth_method: odbc

答案 1 :(得分:2)

  

我有什么办法可以在Mnesia数据库上执行读,写和更新操作吗?

一般信息:

使用ejabberdctl,您可以获得Mnesia一般信息,表格,记录计数,文件目录等的列表。

$ ejabberdctl mnesia [info]

数据处理:

阅读Mnesia记录的一种方法是附加到ejabberd控制台并使用所需的参数调用mnesia:dirty_read/2函数。

$ ejabberdctl debug
1> mnesia:dirty_read(passwd, {<<"username">>, <<"host">>}).
[{passwd,{<<"username">>,<<"host">>}, <<"password">>}]

同样,为了更新(或写入)Mnesia记录,您可以以相同的方式调用mnesia:dirty_write/2功能。

$ ejabberdctl debug
1> mnesia:dirty_write({passwd, {<<"user">>, <<"host">>, <<"new-pass">>}).
ok

要了解其他Mnesia的API,请检查其official manual