美文网首页
MongoDB的安装以及用户的创建

MongoDB的安装以及用户的创建

作者: 一木_qintb | 来源:发表于2020-05-03 01:09 被阅读0次

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

    相关文章

      网友评论

          本文标题:MongoDB的安装以及用户的创建

          本文链接:https://www.haomeiwen.com/subject/tvpjaftx.html