天天看点

rancher安装mongodb数据库

作者:程序员在北京漂

3.0.0 docker版本安装

下载docker镜像

[root@Centos76 ~]# docker pull mongo:3.0.0
[root@Centos76 ~]# docker tag mongo:3.0.0 10.1.17.22/mongodb/mongo:3.0.0
[root@Centos76 ~]# docker push 10.1.17.22/mongodb/mongo:3.0.0
           

rancher部署

rancher安装mongodb数据库

连接数据库

rancher安装mongodb数据库
rancher安装mongodb数据库

测试连接报错

rancher安装mongodb数据库

查看日志发现提示数据库用户不存在

rancher安装mongodb数据库

登录mongo数据库命令行,创建用户后重新连接,显示成功

rancher安装mongodb数据库
rancher安装mongodb数据库

创建用户

MongoDB 目前内置了 7 个角色。

数据库用户角色:read、readWrite;

数据库管理角色:dbAdmin、dbOwner、userAdmin;

集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

备份恢复角色:backup、restore;

所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

超级用户角色:root;这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

内部角色:__system

这些角色对应的作用如下:

Read:允许用户读取指定数据库

readWrite:允许用户读写指定数据库

dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户

clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

root:只在admin数据库中可用。超级账号,超级权限

db.createUser({
user: "root",
pwd:"123456",
roles:[{role:"dbAdmin",db:"admin"}]
})

db.createUser({
user: "dzz",
pwd:"123456",
roles:[{role:"read",db:"admin"}]
})

db.createUser({
user: "root",
pwd:"123456",
roles:[{role:"root",db:"admin"}]
})

//授予角色

db.grantRolesToUser(
"root",
[
{ role: "root", db: "admin" }
]
)

db.grantRolesToUser(
"root",
[
{ role: "root", db: "target" }
]
)           

创建集合sql语句

/*

集合

*/

db.testuser.drop();

db.createCollection('testuser');

db.testuser.insert([{"name": "宦宜修", "GENDER": 0,"ID":1062,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":"13770308930","TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null},

{"name": "宦宜修", "GENDER": 0,"ID":1061,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":"13770308930","TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null},

{"name": "宦宜修", "GENDER": 0,"ID":1060,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":"13770308930","TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null},

{"name": null, "GENDER": 0,"ID":1059,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":"[email protected]","TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null},

{"name": null, "GENDER": 0,"ID":1058,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":"[email protected]","TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null},

{"name": null, "GENDER": 0,"ID":1057,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":"[email protected]","TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null},

{"name": null, "GENDER": 0,"ID":1056,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":null,"TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null}

])

/*

聚合查询

*/

db.tstest.drop();

db.createCollection('tstest');

db.tstest.insert([

{"name": "田半梦,孙悟空", "GENDER": "0","phone_number":"18511076143","ID":997,"number":1,"ADDR":["北京市海淀区东北旺西路10号","黑龙江省海淀区东北旺西路10号"],"PHONE":{"code":"18511076143","phone_number":"01086460113"}},

{"name": "田半梦", "GENDER": "0","phone_number":"18511076143","ID":998,"number":2,"ADDR":["北京市海淀区东北旺西路10号","黑龙江省海淀区东北旺西路10号"],"PHONE":{"code":"18511076143","phone_number":"01086460123"}},

{"name": "田半梦,孙悟空", "GENDER": "0","phone_number":"18511076143","ID":997,"number":1,"ADDR":["北京市海淀区东北旺西路10号","黑龙江省海淀区东北旺西路10号"],"PHONE":{"code":"18511076143","phone_number":"01086460113"}},

{"name": "范雯莉手机号是18645380970", "GENDER": "0","phone_number":"18511076143","ID":997,"number":1,"ADDR":["北京市海淀区东北旺西路10号","黑龙江省海淀区东北旺西路10号"],"PHONE":{"code":"18511076143","phone_number":"01086460113"}},

{"name": "田半梦孙悟空", "GENDER": "0","phone_number":"18511076143","ID":997,"number":1,"ADDR":["北京市海淀区东北旺西路10号","黑龙江省海淀区东北旺西路10号"],"PHONE":{"code":"18511076143","phone_number":"01086460113"}},

])

/*

多个嵌套,多个标签在一个字段中

*/

db.tstest2.drop();

db.createCollection('tstest');

db.tstest2.insert([{"name":"田半梦,孙悟空","GENDER":"0","ID":997,"number":1,"ADDR":[

{"ttt": "张强家的地址是北京是海淀区东北旺西路10号,手机号码是18511076143",}

,{"add": "黑龙江省海淀区东北旺西路10号",}],"PHONE":{"aaaaa": {"bbbbb": {"ccccc": {"ddddd": {"eeeee":

{"fffff": "18511076143"}

}}}},'mmmmm': {mob: "01086460113"},'kkkkk': {mob: "01086460113"}}}])

db.inventory.drop();

db.createCollection('inventory');

db.inventory.insert([

{"name": "田半梦","age":29},

{"name": null,"age":30},

])

视图

db.tstest.find();

db.bb_view_0.drop();

db.createView("bb_view_0","tstest",[{$project:{"phone":"$PHONE.code",Subject:1}}]);

db.bb_view_0.find()

/*

索引

*/

/创建索引/

db.tstest.createIndex({"ID":1})

/查询索引/

db.tstest.getIndexes()

/*

函数

*/

db.tstest.aggregate( [{$group:{_id: null,count: { $sum: 1 }}}])//统计tstest表所有记录

db.tstest.aggregate( [{$group:{_id: null,total: { $sum: "$ID" }}}])//对tstest表计算所有ID求和

db.tstest.aggregate( [{$group: {_id: "$GENDER",total: { $sum: "$ID" }}}])//对每一个唯一的GENDER, 计算ID总和

db.tstest.aggregate({$project:{name:1}})//只显示脱敏后的姓名

db.tstest.aggregate({$unwind:"$ADDR"})//把ADDR数组拆分为单独的文档

db.tstest.aggregate([{$project:{ID:1,"name":1}},])//值显示id和name

db.tstest.aggregate({$project:{"name":1}},{ $limit: 1 });//只显示name

db.tstest.aggregate([{$group: { _id: 1, total: { $sum: "$number" } } }, { $sort: {ID:-1}}])//求number的和,倒叙

db.tstest.aggregate([{$lookup:{from: "inventory",localField: "name",foreignField: "name",as: "users"}}])//tstest中的name关联inventory集中name

db.inventory.aggregate([{$match:{name:'田半梦'}},{$lookup:{from:'tstest',localField:'name',foreignField:'name',as:'user'}}])//过滤,只有name是田半梦的数据,进行关联(显示不出数据即可)