如何直接访问ejabberd`s mnesia?

时间:2013-07-30 09:40:02

标签: ejabberd

ejabberd在ubuntu上运行,版本是2.1.13,只有一个节点,没有分发,我想在 ejabberdctl debug shell中查询它的mnesia数据库

我尝试在 ejabberdctl debug shell中使用 tv:start(),但它返回

undefined function tv:start/0

我也试过

Cookie = 'MY_COOKIE'.
EjabberdNode = 'ejabberd@localhost'.
erlang:set_cookie(EjabberdNode, Cookie).
** exception error: distribution_not_started
   in function  auth:set_cookie/2 (auth.erl, line 119)
net_adm:ping(EjabberdNode).
rpc:call(EjabberdNode, mnesia, system_info, [tables]).

正如你所看到的,我发现错误似乎是分发。

以及如何使用像mysql shell这样的shell查询mnesia中的表?

1 个答案:

答案 0 :(得分:3)

这里我的第一个节点是 ejabberd @ localhost ,为了访问第一个节点的mnesia,我们构建另一个节点 test @ localhost whitch生成一个带有第一个节点的集群,然后你可以访问mnesia。

命令:

 erl -sname test -mnesia dir '"/tmp/"' -mnesia extra_db_nodes "['ejabberd@ubuntu']" -s mnesia

注意:-sname test,必须与第一个节点名称不一样,这里是 ejabberd 然后通过命令启动mnesia

mnesia:start().

然后你可以通过命令检查mnesia

 mnesia:info().
祝你好运〜