当我按照网站上的说明操作时,我尝试连接到终端上的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不起作用
答案 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;
它应该有用。
这有帮助吗?