mongodb 设置用户密码权限

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 表明数据库全部者角色,拥有最高该数据库最高权限。好比新建索引等

  

  • Read:容许用户读取指定数据库
  • readWrite:容许用户读写指定数据库
  • dbAdmin:容许用户在指定数据库中执行管理函数,如索引建立、删除,查看统计或访问system.profile
  • userAdmin:容许用户向system.users集合写入,能够找指定数据库里建立、删除和管理用户
  • clusterAdmin:只在admin数据库中可用,赋予用户全部分片和复制集相关函数的管理权限。
  • readAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的读权限
  • readWriteAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的读写权限
  • userAdminAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的userAdmin权限
  • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的dbAdmin权限。
  • root:只在admin数据库中可用。超级帐号,超级权限
6 python 链接脚本
#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()

 

7 注意
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

https://www.jianshu.com/p/79caa1cc49a5

https://blog.51cto.com/1767340368/2092960

相关文章
相关标签/搜索