一、单个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 ip:port/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)以普通方式启动所有replset、config、route节点服务实例
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)通过mongos为admin添加的用户是在configsvr中的,并没有被同步到replset中,所以改用户并不能在replset的admin库登录
2)通过mongos为其它库添加的用户是同步到replset中的,所以直接登录replset节点,也可以用该用户登录