1 设置管理员帐户html
use admin
db.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
mongodb中的用户是基于身份role的,该管理员帐户的 role是 userAdminAnyDatabase。 ‘userAdmin’表明用户管理身份,’AnyDatabase’ 表明能够管理任何数据库。python
2 验证mongodb
db.auth("useradmin", "adminpassword")
若是返回1,则表示成功。数据库
3 修改配置文件(注意缩进)bash
sudo vi /etc/mongod.conf
#security:
security:
authorization: enabled函数
4 重启mongodb this
sudo service mongod restart
5 建立普通用户spa
进入mongodb,用第3步的 管理员帐户登陆,用该帐户建立其余数据库管理员帐号rest
+先进行管理员认证code
use admin db.auth("useradmin", "adminpassword")
+设置其余库的帐号密码及权限
use yourdatabase db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db: "yourdatabase" }] })
rote:dbOwner 表明数据库全部者角色,拥有最高该数据库最高权限。好比新建索引等
#coding=utf-8 #导入模块 from pymongo import MongoClient #创建链接 client=MongoClient("localhost",27017) #数据库名admin db=client.admin #认证用户密码 db.authenticate('root','123456') #建立集合和数据 db.test.insert({"name":"this is test"}) col=db.test #打印数据输出 for item in col.find(): print item #关闭链接 client.close()
mongo --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"
use foo db.createUser( { user: "simpleUser", pwd: "simplePass", roles: [ { role: "readWrite", db: "foo" }, { role: "read", db: "bar" } ] } ) 如今咱们有了一个普通用户 用户名:simpleUser 密码:simplePass 权限:读写数据库 foo, 只读数据库 bar。 注意 use foo表示用户在 foo 库中建立,就必定要 foo 库验证身份,即用户的信息跟随随数据库。
好比上述 simpleUser 虽然有 bar 库的读取权限,可是必定要先在 foo 库进行身份验证,直接访问会提示验证失败。 use foo db.auth("simpleUser", "simplePass") use bar show collections 还有一点须要注意,若是 admin 库没有任何用户的话,即便在其余数据库中建立了用户,启用身份验证,默认的链接方式依然会有超级权限
参考:
https://www.2cto.com/database/201802/724340.html