MongoDB配置用户安全模式

本文深入探讨了MongoDB的单个服务部署、复制集(Replica Set)及分片(Sharding)技术,包括认证方式设置、复制集初始化、用户授权流程以及Sharding与复制集结合的应用场景。详细解释了如何通过keyFile方式实现服务间的认证与同步,以及在不同部署方式之间的转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、单个mongodb服务

1、auth方式

1)在启动mongodb服务的时候,添加参数--auth

mongod --dbpath XXX --port XXX --auth

2)以本地方式(localhost)登录服务的admin

mongo localhost:port/admin

3)为admin库添加用户

db.addUser(“userName”,”password”)

4)以用户认证方式登录

db.auth(“userName”,”password”)

2、普通方式-->auth方式

1)以普通方式启动mongodb服务(不带--auth参数)

mongod --dbpath XXX --port XXX

2)登录服务的admin

mongo ip:port/admin

3)为admin库添加用户

db.addUser(“userName”,”password”)

4)停止服务

5)以--auth方式重新启动mongodb服务,其它启动参数与之前普通方式一致

mongod --dbpath XXX --port XXX --auth

6)登录admin

mongo ipport/admin

db.auth(“userName”,”password”)

二、Replica set

1、keyFile方式

1)启动所有节点的mongodb服务,添加--keyFile指定秘钥的路径,并且秘钥内容一致

mongod --dbpath XXX --port XXX --replSet rsName --keyFile XXX

......

2)以本地方式登录一个节点的服务

mongo localhost:port

3)配置并且初始化replset

config={_id:”rsName”,members:[

{_id:1,host:”ip:port”,priority:1},

{_id:2,host:”ip:port”,arbiterOnly:true},

{_id:3,host:”ip:port”},

...

]}

rs.initiate(config)

4)进入admin库,为admin库添加用户

use admin

db.addUser(“userName”,”password”)

5)以用户认证方式登录

db.auth(“userName”,”password”)

2、普通方式-->keyFile方式

1)以普通方式启动所有节点服务(不添加keyFile参数)

mongod --dbpath XXX --port XXX --replSet rsName

......

2)登录一个节点,并配置replset

mongo ip:port

config={_id:”rsName”,members:[

{_id:1,host:”ip:port”,priority:1},

{_id:2,host:”ip:port”,arbiterOnly:true},

{_id:3,host:”ip:port”},

...

]}

rs.initiate(config)

3)切换到admin库,并为admin库添加用户

use admin

db.addUser(“userName”,”password”)

4)停止所有的服务

5)以keyFile方式重新启动所有节点,其它参数和普通方式一致

mongod --dbpath XXX --port XXX --replSet rsName --keyFile XXX

......

6)以用户认证方式登录,如是子节点,先释放权限

mongo ip:port/admin

(db.getMongo().setSlaveOk())

db.auth(“userName”,”password”)

三、sharding+Replica set

1、普通方式-->keyFile方式

1)以普通方式启动所有replsetconfigroute节点服务实例

mongod --dbpath XXX --port XXX --replSet --shardsvr

mongod --dbpath XXX --port XXX --configsvr

mongos --configdb XXX --port XXX

2)配置、初始化所有的replset

mongo ip:port

config={_id:”rsName”,members:[

{_id:1,host:”ip:port”,priority:1},

{_id:2,host:”ip:port”,arbiterOnly:true},

{_id:3,host:”ip:port”},

...

]}

rs.initiate(config)

3)登录route服务admin库,配置rs+sharding

mongo ip:port/admin

db.runCommand({addshard:”rsname/ip:port,...”})

db.runCommand({enablesharding:”database”})

db.runCommand({shardcollection:”database.collection”,key:{_id:1}})

4)为admin库添加用户

db.addUser(“userName”,”password”)

5)停止所有服务实例

6)以keyFile方式重新启动所有服务实例,其它参数和普通方式一致

mongod --dbpath XXX --port XXX --replSet --shardsvr --keyFile XXX

mongod --dbpath XXX --port XXX --configsvr --keyFile XXX

mongos --configdb XXX --port XXX --keyFile XXX

2、sharding+replica set方式说明

1)通过mongosadmin添加的用户是在configsvr中的,并没有被同步到replset中,所以改用户并不能在replsetadmin库登录

2)通过mongos为其它库添加的用户是同步到replset中的,所以直接登录replset节点,也可以用该用户登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值