现在我的计算机中有一个mongoDB,位于c:\ mongodb \ bin。首先,它是身份验证禁用。所以当我按:
C:\ Windows \ system32> mongo
有一些警告:
2018-03-28T16:53.516 + 0800 I CONTROL [initandlisten] **警告:未为数据库启用访问控制。2018-03-28T16:53.516 + 0800 I CONTROL [initandlisten] **
对数据和配置的读取和写入访问不受限制。
因此,我尝试将访问控制添加到mongoDB。我所做的是:
Run Code Online (Sandbox Code Playgroud)C:\mongodb\bin>use admin db.createUser( { user: "myUserAdmin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
但是在完成上述操作之后,仍然可以在没有用户名和密码的情况下登录MongoDb。即使在重新启动mongoDB服务之后,还是重新启动计算机。例如:
Run Code Online (Sandbox Code Playgroud)C:\Windows\system32>mongo MongoDB shell version v3.4.9 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.9 Server has startup warnings: 2018-03-28T16:53:43.515+0800 I CONTROL [initandlisten] 2018-03-28T16:53:43.516+0800 I CONTROL [initandlisten] ** WARNING: Access contr ol is not enabled for the database. …
我有一个小的测试代码。我的假设在下面的代码中,因为我没有设置标志来停止线程,所以在的行中GetExitCodeThread()。它应该返回,TRUE并且返回码为STILL_ACTIVE。而在实际测试中,结果是:每一次的返回值GetExitCodeThread()的FALSE,所以main(),在while从未进入循环。有人可以告诉我原因吗?我的代码有什么问题。谢谢。
// ConsoleApplication1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "afxwin.h"
bool bExit = false;
HANDLE hOriginalThread;
static UINT ThreadFunc(LPVOID pParam)
{
int iCount = 0;
printf("start thread--ThreadFunc\n");
printf("Thread loop start: --ThreadFunc");
while (!bExit)
{
iCount++;
if (iCount % 50 == 0)
printf(".");
}
printf("Thread loop end: %d--ThreadFunc\n", iCount++);
printf("end thread--ThreadFunc\n");
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{ …Run Code Online (Sandbox Code Playgroud)