无法通过mongo连接到mLab

时间:2017-06-12 23:19:39

标签: node.js mongodb

当我按照网站上的说明操作时,我尝试连接到终端上的mLab 这是我输入的命令

mongo ds151461.mlab.com:51461/simplelogin -u <dbuser> -p <dbpassword>

这是我得到的结果:

MongoDB shell version v3.4.4
connecting to: mongodb://ds151461.mlab.com:51461/simplelogin
MongoDB server version: 3.2.13
WARNING: shell and server versions do not match
2017-06-12T19:12:35.498-0400 E QUERY    [thread1] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1459:20
@(auth):6:1
@(auth):1:2
exception: login failed

顺便说一句,当我运行本地mongoDB时,我使用mongod使其工作而mongo不起作用

1 个答案:

答案 0 :(得分:2)

由于错误表明您有身份验证错误。 这可能发生,因为您使用的用户凭据对数据库“simplelogin”无效。 (你不能在这里使用mlab凭证,我犯了这个错误,可能会帮助别人,所以值得一提。)

如果您还没有数据库中的用户。请按照以下步骤创建用户。

1 - 通过单击登录页面中的数据库转到数据库页面。     或者使用以下网址https://mlab.com/databases/simplelogin(您必须登录才能使其工作)

2 - 从那里单击“用户”选项卡。单击“添加数据库用户”按钮,然后输入用户名和密码(例如,用户名 - “myuser”和密码 - “mypassword”)。单击“创建”按钮。

3 - 使用这些凭据连接到您的数据库。

//                                                                      >>> https://stackoverflow.com/a/44510552
//  Report 0MQ version
//
/* ----------------------------------------------------------------- */
int                major,  minor,  patch;
zmq_version (     &major, &minor, &patch );                             std::cout << "[INF] ZeroMQ USES 0MQ-API version" << major << "." << minor << "." << patch                                << std::endl;
/* ----------------------------------------------------------------- */ 
zmq::context_t      pure_inproc_ctx( 0 );                               std::cout << "[INF] ZeroMQ CREATED a Zero-IOthreads .Context()-instance for pure-inproc:// transport-classes operations" << std::endl;
zmq::socket_t  pub( pure_inproc_ctx, ZMQ_PAIR );                        std::cout << "[INF] ZeroMQ DONE [pub] socket instantiation" << std::endl;
zmq::socket_t  sub( pure_inproc_ctx, ZMQ_PAIR );                        std::cout << "[INF] ZeroMQ DONE [sub] socket instantiation" << std::endl;

sub.setsockopt( ZMQ_LINGER, 0, 1 );                 /* .setsockopt() */ std::cout << "[INF] ZeroMQ DONE [sub].setsockopt()"         << std::endl;
sub.bind(      "inproc://SelectTest_oneMessage" );  /* .bind()       */ std::cout << "[INF] ZeroMQ DONE [sub].bind()"               << std::endl;

pub.setsockopt( ZMQ_LINGER, 0, 1 );                 /* .setsockopt() */ std::cout << "[INF] ZeroMQ DONE [pub].setsockopt()"         << std::endl;
pub.connect(   "inproc://SelectTest_oneMessage" );  /* .connect()    */ std::cout << "[INF] ZeroMQ DONE [pub].connect()"            << std::endl;

zmq::message_t  aMessageToSEND ( 5 );
     memcpy (   aMessageToSEND.data (), "Hello", 5 );                   std::cout << "[INF] ZeroMQ CREATED a [Hello] Message"       << std::endl;

pub.send (      aMessageToSEND );                                       std::cout << "[INF] ZeroMQ SENT a Message via [pub].send()" << std::endl;

zmq::pollitem_t      sel[1];
                     sel[0].socket = sub;
                     sel[0].events = ZMQ_POLLIN;                        std::cout << "[INF] ZeroMQ DONE a .Poller() setup"          << std::endl;
                                                                        std::cout << "[INF] ZeroMQ WILL wait HERE infinitely for a first .Poller.poll() for a [sub].POLLIN Event"   << std::endl;
int rc = zmq::poll( &sel [0], 1, -1 );                                  std::cout << "[INF] ZeroMQ EXIT from wait-state on a first .Poller.poll() [sub].POLLIN Event"               << std::endl;

ASSERT_TRUE(         sel[0].revents & ZMQ_POLLIN );                     std::cout << "[INF] ZeroMQ DONE test on a first .Poller.poll() [sub].POLLIN Event"                          << std::endl;

zmq::message_t        aMessageToRECV;                                   std::cout << "[INF] ZeroMQ CREATED a aMessageToRECV Message-container instance"                             << std::endl;
ASSERT_NE( sub.recv( &aMessageToRECV ), 0 );                            std::cout << "[INF] ZeroMQ DONE 1st test on [sub].recv() to immediately load aMessageToRECV-container"      << std::endl;
ASSERT_NE( sub.recv( &aMessageToRECV ), 0 );                            std::cout << "[INF] ZeroMQ DONE 2nd test on [sub].recv() to immediately load an already loaded container"   << std::endl;

它应该有用。

这有帮助吗?

相关问题