原由

在上一篇文章MongoBD的安装与配置的末尾,可能有细心的小伙伴已经注意到里,里面有一个警告,如下图

在这里插入图片描述

在翻阅了官方文档,发现了如下信息:

MongoDB部署启用访问控制将强制进行身份验证,要求用户标识自己。访问启用了访问控制的MongoDB部署时,用户只能执行由其角色确定的操作。

也就是说MongoDB需要有一个安全库来开启数据库访问控制,而启用访问控制后,又需要在你的数据库中具有 userAdminuserAdminAnyDatabase角色的admin用户。

操作

所以,为了消除警告,可以进行如下配置

  1. 在没有访问控制的情况下启动MongoDB

    因为使用.msi文件安装的MongoDB在安装完成之后,就已经是启动状态了,所以不用进行此操作,没有启动的可以在任务管理器中的服务中手动开启

在这里插入图片描述

  1. 连接到实例

    打开CMD,输入指令mongo

  2. 创建用户管理员

    需要创建一个拥有userAdminAnyDatabase角色的用户,可以根据如下操作:

    mongo shell的4.2版开始,您可以将passwordPrompt()方法与各种用户身份验证/管理方法/命令结合使用来提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像使用早期版本的mongo shell一样直接指定密码。

    use admin
    db.createUser(
      {
        user: "用户名",
        pwd: passwordPrompt(), // 或者明文密码
        roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
      }
    )
    

    在这里插入图片描述

    在其中创建用户的数据库(在此示例中 admin)是用户的身份验证数据库。尽管用户将对此数据库进行身份验证,但是该用户可以在其他数据库中扮演角色;也就是说,用户的身份验证数据库不限制用户的权限。

  3. 使用访问控制重新启动MongoDB实例

    a. 关闭mongod实例。例如,从mongoshell程序中,发出以下命令:

    db.adminCommand( { shutdown: 1 } )
    

    b. 退出mongoshell(直接关闭CMD窗口)

    c. 在mongod启用访问控制的情况下启动

    • 如果mongod从命令行启动,请添加--auth命令行选项:

      mongod --auth --port 27017 --dbpath <数据库路径>
      
    • 如果启动mongod使用 配置文件,请添加 security.authorization配置文件设置:

      security:
          authorization: enabled
      

      找到安装路径,在bin目录中打开mongoDB.cfg配置文件
      在这里插入图片描述

      删除#security注释,并添加内容,保存!

      在这里插入图片描述

      重新启动MongoDB服务

      在这里插入图片描述

    现在,连接到该实例的客户端必须将自己认证为MongoDB用户。客户只能执行由其分配的角色确定的操作。

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

    打开CMD,输入如下指令进行连接MongoDB数据库

    mongo --port 27017  --authenticationDatabase "admin" -u "用户名" -p
    

    在这里插入图片描述

    登录成功,可以发现已经没有警告了!!

到此,警告的问题已经解决了。如果还有更多问题的小伙伴,可以由此前往官方文档查看解决!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐