Mongodb是一个schema free的非sql类分布式数据库,可以利用它做很多很灵活的存储和操作,最近了解了下它的账户机制,通过设置auth启动方式可以对所有登陆用户做各种操作的限定。
sudo ./bin/mongod --auth -dbpath=/usr/local/mongodb/data/db --port 27017 -logpath=/usr/local/mongodb/log --logappend
dbpath和logpath需要自己提前单独的创建好目录。
-auth: 表示通过认证方式登陆mongodb
不过在用auth方式启动mongodb服务器之前,需要创建一个可以管理所有用户的账户(一般在admin数据库中),如:
use admin
db.createUser(
{
user: "root",
pwd: "root",
roles: [{ role: "userAdminAnyDatabase", db: "admin" } ]
}
)
创建了一个“root”账户,它的role(即权限范围)是“userAdminAnyDatabase”,即可以admin权限管理任意的数据库的用户。
如果不使用“use admin”,那会在当前数据库创建user,不指定db的登陆会默认在test数据库中,createUser中的role指定了权限类型,roles中的“db”指定了作用域的数据库。
设置以auth方式登陆之后,client端通过mongo登陆mongodb,是必须加上“--authenticationDatabase”选项的,“authenticationDatabase”指定了校验用户账户名和密码的数据库,例如:
./bin/mongo mytest -u "test" -p "123" --authenticationDatabase admin
./bin/mongo mytest -u "test" -p "123"
不要kill -9 pid 方式关闭mongodb的进程,这样会有很多服务资源没法回收,应该使用
kill -2 pid
或者
db.shutdownServer()
转载:https://www.jianshu.com/p/88e0d33a6201
原文:https://www.cnblogs.com/xibuhaohao/p/10954436.html