MongoDB 3.0+安全权限访问控制详解

  • A+
所属分类:MongoDB

1、启动没有拜访节制的MongoDB服务

sudo service mongod start

2、衔接到实例

mongo --port 27017

指定额外的敕令行选项来衔接Mongo shell到部署Mongodb服务器, 如--host

3、创立的用户治理员

use admin
db.createUser(
{
user: "大众myUserAdmin"大众,
pwd: "大众abc123"大众,
roles: [ { role: "大众userAdminAnyDatabase"大众, db: "大众admin"大众 } ]
}
)

4、从新启动MongoDB实例,并启用拜访节制

1、从新启动mongod实例,假如使用设置装备摆设文件的设置,security.authorization:

vi /etc/mongod.conf

改动内容:

    security:
      authorization: enabled

2、注意:keys and values之间必定要加空格, 不然解析会报错

    重启服务:

    sudo service mongod start

5、用户治理员身份验证

1、创立衔接mongo shell 时进行授权,指定-u <username>, -p <password>, and the --authenticationDatabase <database>

mongo --port 27017 -u "大众myUserAdmin"大众 -p "大众abc123"大众 --authenticationDatabase "大众admin"大众

2、mongo shell衔接时不认证,使用db.auth()授权

    use admin
    db.auth("大众myUserAdmin"大众, "大众abc123"大众 )

--------------------服务器以开启认证后,若何添加用户--------------------
1、启动MongoDB实例的拜访节制

启动mongod实例 AUTH敕令行选项,假如使用设置装备摆设文件的设置,security.authorization。

sudo service mongod start

2、经由过程localhost exception 衔接MongoDB实例

添加第一个用户, 使用Localhost Exception,衔接一个mongod实例。运行Mongo shell和mongod实例必需来自统一主机

3、同上创立用户方式雷同

--------------------通俗用户平安拜访权限--------------------
1、启动MongoDB

service mongod start

2、再次打开MongoDB shell
1、mongo --port 27017 -u "大众myUserAdmin"大众 -p "大众abc123"大众 --authenticationDatabase "大众admin"大众

2、mongo

    use admin
    db.auth("大众myUserAdmin"大众,"大众abc123"大众)

3、show collections:报错
    由于用户myUserAdmin只用用户的治理权限

3、创立用户,用户都随着数据库走

为myuseradmin创立用户myUserAdmin在admin 数据库

use admin
db.createUser(
{
user: "大众myUserAdmin"大众,
pwd: "大众abc123"大众,
roles: [ { role: "大众userAdminAnyDatabase"大众, db: "大众admin"大众 } ]
}
)

4、查看方才创立的用户

show users

5、查看整个MongoDB全体的用户

use admin
db.system.users.find()
db.system.users.find().pretty()

6、创立完毕、进行验证

use test
db.auth('test1','test1')
1
show collections
ypmlist

--------------------改动权限--------------------

1、updateuser()办法:
1、实例

db.updateUser(
"大众<username>"大众,
{
customData : { <any information> },
roles : [
{ role: "大众<role>"大众, db: "大众<database>"大众 } | "大众<role>"大众,
...
],
pwd: "大众<cleartext password>"大众
},
writeConcern: { <write concern> }
)

2、参数先容:  
    1、username:要更新的用户名。

    2、update:替换用户数据的文档,此数据完全代替了用户的响应数据。

    3、writeConcern:可选,写操作级别。

3、指定要更新的字段和他们的新值:
    1、customData:可选。随意率性信息。

    2、roles:可选。付与用户的脚色。对脚色数组笼罩以前的数组的值更新

    3、pwd:可选。用户暗码

--------------------改动权限操作--------------------
实例:

use admin
switched to db admin
db.auth("大众myUserAdmin"大众, "大众abc123"大众 )
1
use test
db.updateUser(
"大众test1"大众,
{
pwd: "大众itcast"大众,
customData: { title: "大众Senior Manager"大众 },
"大众roles"大众 : [
{
"大众role"大众 : "大众readWrite"大众,
"大众db"大众 : "大众test"大众
},
{
"大众role"大众 : "大众readWrite"大众,
"大众db"大众 : "大众example"大众
}
   }
)

--------------------超等用户--------------------

use admin
db.createUser(
{
user: "大众itcast"大众,
pwd: "大众itcast"大众,
roles: [ { role: "大众root"大众, db: "大众admin"大众 } ]
}
)

2、体系默认脚色:

1、Read:容许用户读取指定数据库
2、readWrite:容许用户读写指定数据库
3、dbAdmin:容许用户在指定数据库中执行治理函数,如索引创立、删除,查看统计或拜访system.profile
4、userAdmin:容许用户向system.users聚拢写入,可以找指定数据库里创立、删除和治理用户
5、clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的治理权限。
6、readAnyDatabase:只在admin数据库中可用,赋予用户所稀有据库的读权限
7、readWriteAnyDatabase:只在admin数据库中可用,赋予用户所稀有据库的读写权限
8、userAdminAnyDatabase:只在admin数据库中可用,赋予用户所稀有据库的userAdmin权限
9、dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所稀有据库的dbAdmin权限。
10、root:只在admin数据库中可用。超等账号,超等权限

您可能感兴致的文章:

Mongodb若何开启用户拜访节制详解

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: