一、开启mongoDB数据库认证模式
安装好mongoDB数据库之后,默认不开启身份认证模式。
所以我们需要删除原有的mongodb服务,重新设置mongodb开启认证,并且重新安装mongodb服务。
针对windows用户,具体步骤如下(未开启认证模式下):
- 以系统管理员身份运行powershell;
- 连接数据库:,命令行直接键入mongo;
- 查看数据库 : show dbs;
- 切换到admin数据库: use admin;
- 创建超级管理员账户:db.createUser({user:"root",pwd:"root",roles:["root"]});
- 切换到其他数据库,比如blog:use blog;
- 对于具体数据库创建普通账号:db.createUser({user:"你设置的用户名",pwd:"你设置的密码",roles:["readWrite"]});
- 卸载mongodb服务:
- 停止服务: net stop mongodb;
- mongod --remove;
- 重新创建认证模式的mongodb服务并安装:
mongod --logpath="F:\MongoDB\MongoDB\Server\4.2\log\mongodb.log" --dbpath="F:\MongoDB\MongoDB\Server\4.2\data" --install --auth
注意:"F:\MongoDB\MongoDB\Server\4.2\"替换成你的mongdb的安装目录
- 启动mongodb服务: net start mongodb
- 以认证方式连接数据库(注意:用户名和密码要和后面的数据库名称对应): mongo --port 27017 -u "用户名" -p "密码" --authenticationDatabase "数据库名称"
二、以后新建数据库需要先开启认证
- 命令行输入:mongo --port 27017 -u "超级管理员账户" -p "超级管理员密码" --authenticationDatabase "admin"
- 切换到新建的数据库(例:blog):use blog,如果不存在数据库那么use命令会自动新建该数据库
- 创建用户:roles支持输入对象数组,为多个数据库设置同样的用户名和密码,且分配不同的角色,也就是权限级别,这些权限是固定的选项值,见下方代码块
- 认证:db.auth("用户名","密码"),返回1表示认证成功
- 之后使用mongocompass访问或者使用mongoose包访问数据库时,都需要携带用户名密码并指定需要认证的数据库名称
db.createUser({
user: '用户名',
pwd: '密码',
roles: [{
role: 'readWrite',
db: 'blog'
}, {
role: 'root',
db: 'test'
}]
})