最近,因项目需要,安装了一个较新版本的mongodb----mongodb3.4.5,原来的addUser命令建用户再执行时,提示不识别命令,查了官方文档才知道,该命令已被替换为db.createUser()。
并且建完用户需要授权:db.auth(),否则用户无法使用,而且建某个数据库的普通用户,必须切换到该数据库才能正常操作。
db.createUser({user:'root', pwd:'NewAdminPass2017', roles:[{ role: "userAdminAnyDatabase", db: "admin" }]})
db.auth('root','NewAdminPass2017')
exit
测试一下
./mongo admin -u root -p NewAdminPass2017
OK,注意,管理员是没有权限访问普通数据库,需要我们建一个普通用户来访问普通数据库。
例如我们有一个数据库,库名为parking,新建一个用户uicps
db.createUser({user:"uicps",pwd:"Newpass1024",roles:[{role:"readWrite",db:"parking"}]})
db.auth('uicps','NewPass1024')
exit
测试
./mongo parking -u uicps -p Newpass1024
use parking;
db.dropUser('uicps')
并且建完用户需要授权:db.auth(),否则用户无法使用,而且建某个数据库的普通用户,必须切换到该数据库才能正常操作。
下面是相关例子:
需在关于权限验证模式下启动mongodb(去掉auth参数)进入mongodb命令行操作
./mongo admin
1、建管理员用户(root)
use admindb.createUser({user:'root', pwd:'NewAdminPass2017', roles:[{ role: "userAdminAnyDatabase", db: "admin" }]})
db.auth('root','NewAdminPass2017')
exit
测试一下
./mongo admin -u root -p NewAdminPass2017
OK,注意,管理员是没有权限访问普通数据库,需要我们建一个普通用户来访问普通数据库。
例如我们有一个数据库,库名为parking,新建一个用户uicps
2、建普通用户(uicps)
use parkingdb.createUser({user:"uicps",pwd:"Newpass1024",roles:[{role:"readWrite",db:"parking"}]})
db.auth('uicps','NewPass1024')
exit
测试
./mongo parking -u uicps -p Newpass1024
3、删除用户(uicps)
./mongo admin -u root -p NewAdminPass2017use parking;
db.dropUser('uicps')