原由
在上一篇文章MongoBD的安装与配置的末尾,可能有细心的小伙伴已经注意到里,里面有一个警告,如下图
在翻阅了官方文档,发现了如下信息:
对MongoDB部署启用访问控制将强制进行身份验证,要求用户标识自己。访问启用了访问控制的MongoDB部署时,用户只能执行由其角色确定的操作。
也就是说MongoDB需要有一个安全库来开启数据库访问控制,而启用访问控制后,又需要在你的数据库中具有 userAdmin
或userAdminAnyDatabase
角色的admin
用户。
操作
所以,为了消除警告,可以进行如下配置
-
在没有访问控制的情况下启动MongoDB
因为使用
.msi
文件安装的MongoDB在安装完成之后,就已经是启动状态了,所以不用进行此操作,没有启动的可以在任务管理器中的服务
中手动开启
-
连接到实例
打开CMD,输入指令
mongo
-
创建用户管理员
需要创建一个拥有userAdminAnyDatabase角色的用户,可以根据如下操作:
从mongo shell的4.2版开始,您可以将
passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用来提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像使用早期版本的mongo shell一样直接指定密码。use admin db.createUser( { user: "用户名", pwd: passwordPrompt(), // 或者明文密码 roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ] } )
在其中创建用户的数据库(在此示例中
admin
)是用户的身份验证数据库。尽管用户将对此数据库进行身份验证,但是该用户可以在其他数据库中扮演角色;也就是说,用户的身份验证数据库不限制用户的权限。 -
使用访问控制重新启动MongoDB实例
a. 关闭
mongod
实例。例如,从mongo
shell程序中,发出以下命令:db.adminCommand( { shutdown: 1 } )
b. 退出
mongo
shell(直接关闭CMD窗口)c. 在
mongod
启用访问控制的情况下启动-
如果
mongod
从命令行启动,请添加--auth
命令行选项:mongod --auth --port 27017 --dbpath <数据库路径>
-
如果启动
mongod
使用 配置文件,请添加security.authorization
配置文件设置:security: authorization: enabled
找到安装路径,在
bin
目录中打开mongoDB.cfg
配置文件
删除
#security
注释,并添加内容,保存!重新启动
MongoDB
服务
现在,连接到该实例的客户端必须将自己认证为MongoDB用户。客户只能执行由其分配的角色确定的操作。
-
-
以用户管理员身份连接并进行身份验证
打开CMD,输入如下指令进行连接
MongoDB
数据库mongo --port 27017 --authenticationDatabase "admin" -u "用户名" -p
登录成功,可以发现已经没有警告了!!
到此,警告的问题已经解决了。如果还有更多问题的小伙伴,可以由此前往官方文档查看解决!