MongoDB的安装以及用户的创建

2020-05-03  本文已影响0人  一木_qintb

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 提供向任何用户分配任何数据库的任何权限的能力,超级用户权限
上一篇下一篇

猜你喜欢

热点阅读