mongodb 开启身份认证_MongoDB启用身份验证

MongoDB支持各种认证机制,以下启用独立 mongod 实例的访问控制,并使用默认身份验证机制。

用户管理员

启用访问控制后,请确保在 admin 数据库中拥有 userAdmin 或 userAdminAnyDatabase 角色的用户。该用户可以管理用户和角色,例如:创建用户,授予或撤销用户角色,以及创建或修改定义角色。 可以在启用访问控制之前或之后创建用户。如果在创建任何用户之前启用访问控制,MongoDB会提示本地主机异常,允许在管理数据库中创建用户管理员。创建后,必须作为用户管理员进行身份验证,以根据需要创建其他用户。

以下过程首先将用户管理员添加到运行无访问控制的 MongoDB 实例,然后启用访问控制。

创建用户管理员

在管理数据库中,添加具有 userAdminAnyDatabase 角色的用户。以下在 admin 数据库中创建用户justin:

注意:创建用户的数据库(在此示例中为admin)是用户的身份验证数据库。用户将对该数据库进行身份验证,但用户可以在其他数据库中担任角色; 即用户的认证数据库不限制用户的权限。

[root@localhost bin]# pwd

/opt/mongodb-3.4.6/bin

[root@localhost bin]# ./mongo --port 9981

MongoDB shell version v3.4.6

connecting to: mongodb://127.0.0.1:9981/

MongoDB server version: 3.4.6

Welcome to the MongoDB shell.

For interactive help, type "help".

For more comprehensive documentation, see

http://docs.mongodb.org/

Questions? Try the support group

http://groups.google.com/group/mongodb-user

Server has startup warnings:

2017-12-20T00:45:44.490+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.

2017-12-20T00:45:44.490+0800 I CONTROL [initandlisten]

> use admin

switched to db admin

> db.createUser( #回车

... { #回车,下同

... user:"justin",

... pwd:"51cto",

... roles:[{role:"userAdminAnyDatabase",db:"admin"}]

... }

... )

Successfully added user: {

"user" : "justin",

"roles" : [

{

"role" : "userAdminAnyDatabase",

"db" : "admin"

}

]

}

> exit

bye

[root@localhost bin]#

修改mongodb配置文件,启用认证

[root@localhost bin]# cat ../conf/mongodb.conf

bind_ip = 0.0.0.0

port = 9981

fork = true

dbpath = /opt/mongodb-3.4.6/data

pidfilepath = /var/run/mongod.pid

logpath = /opt/mongodb-3.4.6/logs/mongod.log

logappend = true

auth = true

[root@localhost bin]# systemctl restart mongodb.service

[root@localhost bin]#

3. 以用户管理员身份进行连接和验证

在连接期间进行身份验证,使用-u ,-p 和--authenticationDatabase

连接后验证,切换到身份验证数据库(在这种情况下为admin),并使用db.auth(,)方法进行身份验证

[root@localhost bin]# ./mongo --port 9981 -u "justin" -p "51cto" --authenticationDatabase "admin"

MongoDB shell version v3.4.6

connecting to: mongodb://127.0.0.1:9981/

MongoDB server version: 3.4.6

exit

bye

[root@localhost bin]# ./mongo --port 9981

MongoDB shell version v3.4.6

connecting to: mongodb://127.0.0.1:9981/

MongoDB server version: 3.4.6

use admin

switched to db admin

db.auth("justin","51cto")

1

exit

bye

[root@localhost bin]#

4. 根据需要创建其他用户

当管理员用户进行身份验证通过之后,可使用db.createUser()创建其他用户。可以为用户分配任何内置角色或用户定义的角色。

myUserAdmin用户只具有管理用户和角色的权限。如果使用myUserAdmin尝试执行任何其他操作,例如从ywbz数据库中的foo集合读取数据,MongoDB将返回错误。

以下操作将用户 csdp添加到在ywbz数据库中并给予ywbz数据库的readWrite角色以及在reporting数据库中读取角色。

注意:创建用户的数据库(在本示例中为ywbz)是该用户的身份验证数据库。虽然用户将对该数据库进行身份验证,但用户可以在其他数据库中担任角色; 即用户的认证数据库不会限制用户的权限。

[root@localhost bin]# ./mongo --port 9981 -u "justin" -p "51cto" --authenticationDatabase "admin"

MongoDB shell version v3.4.6

connecting to: mongodb://127.0.0.1:9981/

MongoDB server version: 3.4.6

> use ywbz

switched to db ywbz

> db.createUser(

... {

... user:"csdp",

... pwd:"51cto",

... roles:[{role:"readWrite",db:"ywbz"}, #用户csdp在数据库ywbz中执行读写操作权限

... {role:"read",db:"reporting"}] #用户csdp在数据库reporting中有读操作权限

... }

... )

Successfully added user: {

"user" : "csdp",

"roles" : [

{

"role" : "readWrite",

"db" : "ywbz"

},

{

"role" : "read",

"db" : "reporting"

}

]

}

> exit

bye

[root@localhost bin]#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值