由于服务器是server版本,所以很难直观的看到mnesia的数据。所以对于初学者来说非常的困惑。
特地在qq群中请教了别人。别人说只要pong通了就行,就能通过rpc去操作远程的mnesia数据库。初学者太懂这个意思。然后特地搜索了一下,终于搜到了别人关于两台erl节点服务器ping通的文章。
ok,接下来远程连接ejabber的mnesia数据库吧。
ejabberd默认节点是ejabberd@localhost,这种节点是无法正常ping通的。我也尝试修改ejabberdctl.cfg配置文件、hosts等文件去修改ejabberd节点。虽然成功,ejabberd能启动,但是停止命令无效。我没有深究这个问题。想直接对ejabberd的mnesia做连接。不管ejabberd的节点问题。
于是。。。
启动erlang的,并指定mnesia数据库的目录。
我在虚拟机上操作如下:
- $ erl -name '[email protected]' -mnesia dir '"/var/lib/ejabberd"' (ip为本机的ip,必须,否则不能ping通)
- ([email protected])>
- ([email protected])> auth:get_cookie(). (获取cookie)
- ([email protected])> 'ABSDVFHTFSH'
复制cookie,然后在本机上操作:
- $ erl -name '[email protected]' -setcookie 'ABSDVFHTFSH'
- ([email protected])>
- ([email protected])>net_adm:ping('[email protected]').
- ([email protected])>pong
//pong表示通了,pang表示没有通
然后就能远程操作mnesia了。例如:observer:start().