最好是3台及以上,2台时,当master宕机时,会发生副本依然不会被选举为master的问题
容器创建命令(111&&112):docker run --name mongo -v /data1/db:/data/db -p 27017:27017 -d mongo --replSet "rs0"
“rs0”是副本集名,可自定义
任选一台:
> rs.initiate( {
_id : "rs0",
members: [
{ _id: 0, host: "192.168.1.111:27017" },
{ _id: 1, host: "192.168.1.112:27017" }]
})
> rs.conf() #查看配置
> rs.status() #查看副本集状态
> rs.add("ip:port") #添加副本集 例如:rs.add("192.168.170.111:27017")
> ra.isMaster() #查看主节点
> cfg = rs.conf() #配置优先级,优先级高的优先被选举为主节点,当优先级不同时,可用此命令切换主节点,此处配置104为主节点。
> cfg.members[0].priority = 2
> cfg.members[1].priority = 1
> rs.reconfig(cfg)
当优先级相同时,在主节点执行以下命令切换主节点
> rs.stepDown(20) 降级20s,若此节点优先级最高,20s后会恢复为主节点
查询用户信息:
> db.system.users.find().pretty()
创建root用户:
> db.createUser({user:"root",pwd:"root",roles:[{role:"root",db:"admin"}]});
删除用户:
> db..dropUser("user_name")
权限说明(基于角色的权限控制)
1 内置角色
数据库用户角色
read: 只读数据权限
readWrite:读写数据权限
数据库管理角色
dbAdmin: 在当前db中执行管理操作的权限
dbOwner: 在当前db中执行任意操作
userADmin: 在当前db中管理user的权限
备份和还原角色
backup
restore
夸库角色
readAnyDatabase: 在所有数据库上都有读取数据的权限
readWriteAnyDatabase: 在所有数据库上都有读写数据的权限
userAdminAnyDatabase: 在所有数据库上都有管理user的权限
dbAdminAnyDatabase: 管理所有数据库的权限
集群管理
clusterAdmin: 管理机器的最高权限
clusterManager: 管理和监控集群的权限
clusterMonitor: 监控集群的权限
hostManager: 管理Server
超级权限
root: 超级用户
2 自定义角色
内置角色只能控制User在DB级别上执行的操作,管理员可以创建自定义角色,控制用户在集合级别(Collection-Level)上执行的操作,即,控制User在当前DB的特定集合上执行特定的操作
网友评论