版权声明:原创文章,如想转载,请注明原文网址,注明出处;否则,禁止转载;谢谢配合! https://blog.csdn.net/c_kite/article/details/85845983
本文代码测试环境: win10, MongoDB 4.0.5
刚安装好的mongodb会提示:
2019-01-05T11:22:42.470+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-01-05T11:22:42.470+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
我们可以创建用户来解决这个问题.
创建用户
由于刚安装完, 没有权限校验因此可以先创建一个超级管理员
use admin
db.createUser(
{
user:"root", // 用户名
pwd:"root", // 密码
roles:[ // 角色
{role:"root",db:"admin"} // 超级管理员
]
}
)
// 输入命令, 提示Successfully added user:
// 之后可以输入show users命令, 查看详情
角色介绍
1.数据库用户角色:read、readWrite;
2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore;
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超级用户角色:root
修改密码
db.changeUserPassword("用户名", "密码")
删除用户
db.dropUser("用户名");
接着文章开头
创建完超级管理员之后最后再使用dbAdmin
, 或者dbAdminAnyDatabase
创建一个日常开发角色. 命令还是createUser
, 只需要把roles里面的role更改一下就好.
创建完之后在MongoDB(博主的版本为4.0.5)的安装目录下找到bin文件夹, 打开里面的mongod.cfg
.
增加字段authorization: enabled
, 开启权限校验
之后使用net stop mongodb
, net start mongodb
重启一下mongo的服务
再次进入的时候就会发现, 之前的warning不见了.
登录
登录用户有两种方法
// 1
输入命令 mongo
输入命令 use admin(切换到刚刚创建用户的数据库, 如不切换这时的数据库默认为test)
输入命令db.auth("用户名", "密码") 返回值为1代表登录成功
// 2
mongo -u "用户名" -p "密码" --authenticationDatabase 指定数据库 --port 指定端口
--authenticationDatabase 不写默认test数据库
--port 不写默认为27017, 如果想修改可以在mongod.cfg文件中修改