\默认情况下mongodb不开启权限认证。
好的架构设计,应该是数据库不会暴漏给公共环境。
如果需要开放mongodb的远程访问,尽量考虑加入权限认证。
添加用户认证,必须在启动mongod的时候使用参数--auth。需要注意的是,mongodb开启权限认证后,本机访问可以拥有所有权限,其他机器访问权限认证才会生效。
分为以下几步:
- 在admin中创建用户admin,密码adminpasswd
> use admin
switched to db admin
> db.addUser("admin","adminpasswd")
# 默认情况下是赋于用户读写的权限的,如果只想给某个用户只读权限,可以用
db.addUser("name","passwd", true)
- 给刚添加的用户添加认证
> db.auth("admin","adminpasswd")
1
如果认证成功,会显示“1”
- 查看数据库的用户信息 > use admin
switched to db admin
> db
admin
> show collections
system.indexes
system.users
> db.system.users.find()
{ "_id" : ObjectId("4e0d739eb3c346f3e43adba4"), "user" : "admin", "readOnly" : false, "pwd" : "e96d1448efad8a776534903ddff78e9a" } - 测试认证
mongo --port 27017 admin -u admin -p
mongo --port 27017 admin -u testtest -p # 不能成功登陆 - 删除用户:
> db.removeUser( username ) # 或者支持操作db.system.users集合