MongoDB的安装以及用户的创建

Windows 安装 MongoDB

首先前往 mongodb 官网下载安装包:https://www.mongodb.com/download-center/community

1588408081(1).jpg

下载完成后,双击安装:

1588408335(1).jpg
1588408622(1).jpg
1588408822(1).jpg

后面直接一直点 next ,最后点 install 安装就好了。

命令行方式启动 MongoDB

为了从命令提示符下启动 MongoDB 服务,你必须从 MongoDB 目录的 bin 目录中执行 mongod.exe 文件。

C:\Program Files\MongoDB\Server\4.2\bin> mongod --dbpath d:\mongodb\data\db
1588409489(1).jpg

如果执行后没有报错且光标在闪烁,那代表运行成功。

Windows 服务方式启动 MongoDB

通过执行 mongod.exe,使用 --install 选项来安装服务,使用 --config 选项来指定配置文件。

 C:\Program Files\MongoDB\Server\4.2\bin> mongod.exe --config "C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg" --install

如果没有任何报错,代表安装成功。

win+R 键打开运行窗口,输入 services.msc 即可快速打开Windows服务界面。

1588411822(1).jpg
1588411962(1).jpg

点击左上角 启动 服务,如果弹窗显示如下:

1588412255(1).jpg

说明是系统环境变量没有设置好或前面安装服务出现问题,请排查后再启动。

如果左上角出现 停止重启动 说明服务启动成功。

命令行启动和 Windows 服务启动任选一种方式即可,按自己的喜好来。

连接MongoDB

运行 MongoDB 服务的窗口不要关,另外打开一个命令行窗口,执行:

C:\Program Files\MongoDB\Server\4.2\bin> mongo
1588411347(1).jpg

如上图所示,即表示连接 MongoDB 成功。

当你进入 MongoDB 后台后,它默认会连接到 test 文档(数据库),你也可以执行:

> db
test

来显示当前连接的数据库。

执行 mongo 命令相当于打开了一个 MongoDB Shell,它是MongoDB自带的交互式 Javascript shell,用来对 MongoDB 进行操作和管理的交互式环境。

如果是 Windows 服务方式运行的 MongoDB,直接运行 cmd 在窗口中执行 mongo 即可连接 MongoDB,无需进入安装 MongoDB 的 bin 目录中。

MongoDB启用访问控制

安装的MongoDB有默认的4个数据库 adminlocalconfigtest,它们都是没有任何安全验证的,因此我们要创建用户角色和密码来启用访问控制,确保数据安全。

创建用户管理员

在 MongoDB Shell 中执行:

> db.createUser({ 
    user: "myUserAdmin", // 用户名自定义
    pwd: passwordPrompt(), // 或明文密码* 
    roles: [{role: "userAdminAnyDatabase", db: "admin"}, "readWriteAnyDatabase"]
  })

如果执行后出现 Successfully added user: 说明创建成功。

* pwd 为 passwordPrompt() 时,执行后窗口会出现 Enter password:,键入的密码是不可见的。

启用访问控制后要重启 MongoDB 服务:

  1. 在 MongoDB Shell 中执行 db.adminCommand({ shutdown: 1 }) 后关闭 MongoDB Shell 窗口;

  2. 如果是命令行方式启动 MongoDB 服务,请添加 --auth 命令行选项。

    C:\Program Files\MongoDB\Server\4.2\bin> mongod --auth --dbpath d:\mongodb\data\db
    
  3. 如果是 Windows 服务方式启动 MongoDB,请在配置文件 mongod.cfg 中设置:

    security: // 记得将前面的'#'去掉
     authorization: enabled
    

以用户管理员身份连接并进行身份验证

创建完用户管理员后,我们就要使用刚刚设置的用户和密码去连接 MongoDB 了。

验证身份的方式有两种,一是在连接的时候就进行身份验证,二是先连接然后使用 db.auth() 进行身份验证。

  1. 连接时验证身份:

    C:\Program Files\MongoDB\Server\4.2\bin> mongo --authenticationDatabase "admin" -u "myUserAdmin" -p
    
    1588416419(1).jpg

输入正确的密码即可通过验证。

  1. 先连接后验证身份:

    > use admin // 先切换数据库
    > db.auth("myUserAdmin", passwordPrompt()) // 或明文密码
    
    1588430385.jpg

出现提示输入密码即可验证成功。

根据需要创建其他用户

一旦创建用户管理员,就可以用 db.createUser() 创建其他用户。

比如在 test 数据库中创建一个用户 myTester,该用户具有读写 test 数据库的权限,同时他还有读 produce 数据库的权限。

> use test
> db.createUser({
    user: "myTester",
    pwd: passwordPrompt(), // 或明文密码
    roles: [
      { role: "readWrite", db: "test" },
      { role: "read", db: "produce" }
    ]
  })

同样的,如果执行后出现 Successfully added user: 说明创建成功。

注意:虽然在此例子中是针对 test 数据库进行创建用户,但是该用户可以在其他数据库中扮演角色,即验证该用户身份的数据库不限制用户的权限。

其他常用命令

  1. 修改用户密码:

    > use test
    > db.changeUserPassword("myTester", "abcd1234")
    
  2. 撤销用户的角色:

    > use test
    > db.revokeRolesFromUser(
        "myTester",
        [{ role: "readWrite", db: "test" }]
      )
    
  3. 删除指定用户:

    > use test
    > db.dropUser("myTester")
    
  4. 查看用户角色和权限:

    > use test
    > db.getUser("myTester")
    
  5. 修改用户的角色:

    > use test
    > db.updateUser(
        "myTester",
        {
          pwd: passwordPrompt(),
          roles: [
            { role: "readWrite", db: "test" },
            { role: "userAdmin", db: "test" }
          ]
        }
      )
    

注意:以上命令执行的前提是必须先切换到 admin 数据库进行身份验证后才能执行成功。

常用内置角色

分类 角色 说明
数据库用户角色 readreadWrite 提供读或读写某个数据库的权限
数据库管理角色 dbAdmindbOwneruserAdmin 提供用户在数据库上创建或修改用户的权限,提供管理执行任务的权限。
其中 dbOwner 角色是 readWritedbAdminuserAdmin 的权限集合
集群管理角色 clusterAdminclusterManagerclusterMonitorhostManager 提供对集群数据库的管理和操作权限
备份和还原角色 backuprestore 提供备份和还原数据的权限
全数据库角色 readAnyDatabasereadWriteAnyDatabaseuserAdminAnyDatabasedbAdminAnyDatabase 仅在 admin 数据库上可用,提供除 local 数据库外所有数据库的特权
超级用户角色 root 提供向任何用户分配任何数据库的任何权限的能力,超级用户权限
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269