高端手机网站平台,建行24小时人工电话,商丘app开发,上海百度seo点击软件用户管理
1、建用户时#xff0c;use到的库就是此用户的验证库
2、登录时必须明确指定验证库才能登录
3、通常管理员用的验证库是admin#xff0c;普通用户的验证库一般是所管理的库设置为验证库
4、如果直接登录到数据库#xff0c;不进行use#xff08;示例#xff…用户管理
1、建用户时use到的库就是此用户的验证库
2、登录时必须明确指定验证库才能登录
3、通常管理员用的验证库是admin普通用户的验证库一般是所管理的库设置为验证库
4、如果直接登录到数据库不进行use示例默认的验证库是test不是我们生产建议的
注意
验证库建立用户时use到的库在使用用户时要加上验证库才能登陆。对于管理员用户必须在admin下创建。
建立用户语法
db.createUser
{ user: name, pwd: cleartext password, roles: [ { role: role, db: database } | role, ... ]
}
语法说明
user:用户名
pwd:密码
roles: role:角色名 db:作用对象数据库
roleroot, readWrite,read
实验环境 上一章的基础上
用户管理例子
系统库介绍
admin管理
config: 配置
local本地消息
1、创建超级管理员管理所有数据库必须use admin再去创建
use admin db.createUser(
{
user: root,
pwd: root123,
roles: [ { role: root,db: admin } ]
}
) 验证用户
mongo -uroot -proot123 192.168.8.5/admin db 启用身份验证这样可以限制对数据库的访问只有经过认证的用户才能进行相应的操作。
修改配置文件
vim /mongodb/conf/mongodb.conf
添加
security: authorization: enabled 重启mongodb
mongod -f /mongodb/conf/mongodb.conf --shutdown
mongod -f /mongodb/conf/mongodb.conf
登录验证
mongo -uroot -proot123 admin 或
mongo -uroot -proot123 192.168.8.5/admin 或
mongo
use admin
db.auth(root,root123) 查看用户
use admin
db.system.users.find().pretty()
.pretty()方法确保输出结果以易于阅读的格式展示每个字段都会在新的一行显示提高可读性。 2、创建库管理用户针对某个库
mongo -uroot -proot123 admin
use app
db.createUser(
{
user: adminapp,
pwd: app123,
roles: [ { role: dbAdmin, db: app } ]
}
) 登录adminapp用户测试
mongo -uadminapp -papp123 192.168.8.5/app db
show dbs
db.createCollection(a)
db.createCollection(b)
db.haha.insert({id : 1021 ,name : zhssn ,age : 22 ,gender : female,address : sz}) dbAdmin角色权限很低能建表也能删表不能增删改查。
3、创建对app数据库读、写权限的用户app01
1超级管理员用户登陆
mongo -uroot -proot123 admin
2进入app库
use app
3创建用户app01
db.createUser(
{
user: app01,
pwd: app01,
roles: [ { role: readWrite , db: app } ]
}
) 4登录app01用户测试
mongo -uapp01 -papp01 192.168.8.5/app 查看数据库
db 往haha表中添加数据
db.haha.insert({id : 101 ,name : zhangsan ,age : 18 ,gender : male}) 查看所有表
show tables 4、创建对app数据库读写权限和对test数据库具有读权限的用户app03
创建对app数据库读权限的用户app02
mongo -uroot -proot123 192.168.8.5/admin
use app
db.createUser(
{
user: app03,
pwd: app03,
roles: [ { role: readWrite, db: app },
{ role: read, db: test }]
}
) db.createUser(
{
user: app02,
pwd: app02,
roles: [ { role: read, db: app }]
}
) 测试app03用户
mongo -uapp03 -papp03 192.168.8.5/app 查看log表中数据
db.log.find() 往haha表中添加数据
db.haha.insert({id : 103 ,name : zhangsan ,age : 18 ,gender : male}) 测试app02用户
mongo -uapp02 -papp02 192.168.8.5/app 查看所有表
show tables 查看log表中数据
db.log.find() 删除log表
db.log.drop() 只有读权限无法删除表操作
5、查询mongodb中的用户信息
mongo -uroot -proot123 192.168.8.5/admin
db.system.users.find().pretty() 6、删除用户
root用户登录并切换到对用户授权库
mongo -uroot -proot123 192.168.8.5/admin
use app
db.dropUser(app02) 查看所有用户
use admin
db.system.users.find().pretty()
没有app02用户删除成功 MongoDB复制集RSReplicationSet
基本原理 Primary 节点将数据修改操作记录到本地的 oplog操作日志,在 local 库下中Secondary 节点定期到 Primary 节点获取这些操作日志然后对自己的数据副本执行这些操作从而保证 Secondary 与 Primary 数据一致。
在 MongoDB 副本集中Secondary 会不间断的通过心跳来探测 Primary 是否正常当 Primary 不可用时各 Secondary 之间会触发选举操作通过优先级来选举出一个 Secondary 做为新的 Primary这个过程是无需人工干预的。
基本构成是1主2从的结构自带互相监控投票机制RaftMongoDB Paxosmysql MGR 用的是变种
如果发生主库宕机复制集内部会进行投票选举选择一个新的主库替代原有主库对外提供服务。同时复制集会自动通知客户端程序主库已经发生切换了。应用就会连接到新的主库。
副本集特性
多个 MongoDB 实例建立的集群任何节点都可以作为 Primary所有写操作都走 Primary自动故障转移自动恢复
Replication Set配置过程详解
三个以上的mongodb节点或多实例
1、创建多实例mongodb目录
su - mongod
mkdir -p /mongodb/280{17..20}/{conf,data,log}
2、创建配置文件
cat /mongodb/28017/conf/mongod.conf EOF
systemLog: destination: file path: /mongodb/28017/log/mongodb.log logAppend: true
storage: journal: enabled: true dbPath: /mongodb/28017/data directoryPerDB: true #engine: wiredTiger wiredTiger: engineConfig: cacheSizeGB: 1 directoryForIndexes: true collectionConfig: blockCompressor: zlib indexConfig: prefixCompression: true
processManagement: fork: true
net: bindIp: 192.168.8.5,127.0.0.1 port: 28017
replication: oplogSizeMB: 2048 replSetName: my_repl
EOF cp /mongodb/28017/conf/mongod.conf /mongodb/28018/conf/
cp /mongodb/28017/conf/mongod.conf /mongodb/28019/conf/
cp /mongodb/28017/conf/mongod.conf /mongodb/28020/conf/
sed s#28017#28018#g /mongodb/28018/conf/mongod.conf -i
sed s#28017#28019#g /mongodb/28019/conf/mongod.conf -i
sed s#28017#28020#g /mongodb/28020/conf/mongod.conf -i
3、启动mongodb多实例
mongod -f /mongodb/28017/conf/mongod.conf
mongod -f /mongodb/28018/conf/mongod.conf
mongod -f /mongodb/28019/conf/mongod.conf
mongod -f /mongodb/28020/conf/mongod.conf
netstat -anpt | grep mongod 4、配置普通复制集1主2从
mongo -port 28017 admin
config {_id: my_repl, members: [
{_id: 0, host: 192.168.8.5:28017},
{_id: 1, host: 192.168.8.5:28018},
{_id: 2, host: 192.168.8.5:28019}]
} 初始化副本集
rs.initiate(config) 自动选择主从
输入命令前面变成复制集的状态一开始是SECONARY等待变成PRIMARY 查看复制集状态
rs.status() 复制当前会话登录mongodb实例28018端口验证
su - mongod
mongo -port 28018 admin
输入命令前面变成复制集的状态SECONDAY 5、配置1主1从1仲裁arbiter的命令了解不用执行
mongo -port 28017 admin
config {_id: my_repl, members: [
{_id: 0, host: 192.168.8.5:28017},
{_id: 1, host: 192.168.8.5:28018},
{_id: 2, host: 192.168.8.5:28019,arbiterOnly:true}]
}
初始化副本集
rs.initiate(config)
6、复制集管理操作
1查看复制集状态
查看整体复制集状态
rs.status()
查看当前是否是主节点
rs.isMaster()
查看复制集配置信息
rs.conf()
从节点临时可读
rs.slaveOk()
2添加删除节点
删除一个节点
rs.remove(ip:port)
新增从节点
rs.add(ip:port)
新增仲裁节点
rs.addArb(ip:port)
例子1
添加 arbiter节点平时不工作作用不大
mongo -port 28017 admin
添加仲裁节点
rs.addArb(192.168.8.5:28020) 查看节点状态
rs.isMaster() 删除节点
rs.remove(192.168.8.5:28020) 查看节点状态
rs.isMaster() 再把28020实例作为仲裁节点
rs.addArb(192.168.8.5:28020) rs.isMaster() 例子2
删除节点
rs.remove(192.168.8.5:28019) rs.isMaster() 新增从节点
rs.add(192.168.8.5:28019) rs.isMaster() 3特殊从节点
介绍
arbiter节点主要负责选主过程中的投票但是不存储任何数据也不提供任何服务
hidden节点隐藏节点不参与选主也不对外提供服务。
delay节点延时节点数据落后于主库一段时间因为数据是延时的也不应该提供服务或参与选主所以通常会配合hidden隐藏
一般情况下会将delayhidden一起配置使用 配置延时节点一般延时节点也配置成hidden 1、查看配置信息
rs.conf() 2、配置延时从库这里让28018端口实例延时从库
[]中是节点id号
28018端口实例的id号为1
cfgrs.conf() ——定义配置为cfg变量
输入后不弹消息
cfg.members[1].priority0 ——定义权重为0不参与选主 cfg.members[1].hiddentrue ——隐藏节点不参与业务 cfg.members[1].slaveDelay60 ——延时的秒数 cfg.members[1].votes0 ——不投票持有票数为0 rs.reconfig(cfg) ——重新加载配置 3、查看配置信息
rs.conf() 测试
复制当前会话
第二个会话
su – mongod
mongo -port 28018 admin 开启从节点临时可读
rs.slaveOk() 查看所有数据库
show dbs 第一个会话
创建数据库delay并创建haha表写入内容
use delay
db.haha.insert({id : 101 ,name : zhangsan ,age : 18 ,gender : male}) 查看数据库
show dbs 第二个会话
查看数据库
show dbs 数据还未同步到
等待60秒后再次查询
show dbs delay数据库同步
查看数据库中内容
use delay
show tables
db.haha.find() 取消延时从库命令
cfgrs.conf()
cfg.members[2].priority1
cfg.members[2].hiddenfalse
cfg.members[2].slaveDelay0
rs.reconfig(cfg)
4副本集其他操作命令
查看副本集的配置信息
rs.conf()
查看副本集各成员的状态
rs.status()
副本集角色降级不要人为随便操作
rs.stepDown(300)
或
rs.freeze(300) //锁定从使其不会转变成主库
freeze()和stepDown单位都是秒。
设置副本节点可读在副本节点执行
rs.slaveOk() ——临时重启失效
注每次在从库上查询必须输入“rs.slaveOk()”才能查询数据可以设置永久可读
会话二
创建配置文件
vim /home/mongod/.mongorc.js
添加
rs.slaveOk() 验证
mongo -port 28018 admin 查看所有数据库
show dbs 可以直接查看不用输入rs.slaveOk() 查看副本节点监控主从延时
rs.printSlaveReplicationInfo() 28018做了从库延时所以延时60秒