mongoDB基本概念、mongo shell脚本编程、配置用户账户和访问控制

1、Nosql 

"不仅仅是sql",非关系型数据库存储结构。包括以下几种类型:

  • 文档存储数据结构 :mongodb
  • 键/值存储结构 :redis
  • 列存储结构:habase
  • 图存储结构:virtuoso

2、mongoDB数据模型

mongodb使用集合将数据编组,集合是一组用途相同或者类似的文档,相当于传统sql数据库中的表。

在mongodb中,文档标识单个实体的数据,而集合包括一个或者多个相关的文档。

mongodb中表示文档的记录是以BSON,一种轻量级的二进制json。

3、规划数据模型

  • 使用文档引用范式化数据

数据范式化指通过组织文档和集合以最大限度减少冗余和依赖。

适用于:主对象与子对象是一对多的关系

  • 使用嵌入式文档对数据进行反范式化

对数据进行反范式化指的是找出应直接嵌入到主对象文档中的子对象。

适用于:主对象与子对象之间为一对一或者子对象很少且不会频繁更新。

4、mongoDB shell脚本编程(使用javascript)

主要通过以下三种方式实现:

  • -eval 执行 JavaScript 表达式 

如:启动mongoDB之后,输入以下命令:启动mongodb shell,连接到test数据库,并对该数据库执行db.getCollections()

mongo test -eval "printjson(db.getCollections())"
  • 在mongodb shell中使用load(script_path)

如:启动mongoDB之后,输入命令mongo打开mongodb shell,再输入:

load("E:/code/hour02/shell_script.js")
  • 在mongo中指定要执行的JavaScript 文件

这是最常用的方法,启动mongoDB之后,直接使用mongo 命令执行,如:

mongo shell_script.js

5、配置账户和访问控制

  • 创建用户账户(4.4.7版本)
mongo = new Mongo("localhost");
db = mongo.getDB("test")
db.createUser({
	user:"testAdmin",
	pwd:"test",
	roles:["dbAdmin"]
});

//将testUser加入到admin数据库,只有read权限,但同时对数据库test有readWrite的权限
db = mongo.getDB("admin")
db.createUser
({
	user:"testUser",
	pwd:"test",
	roles:
	[
		{role:"readWrite",db:"test"},
		"read"
	]
});

可分配的数据可角色:read    readAnyDatabase   readWrite    readWriteAnyDatabase    dbAdmin   dbAdminAnyDatabase 

clusterAdmin   userAdmin   userAdminAnyDatabase

  • 列出用户

到某个数据库下查看用户列表,直接输入命令:

use admin
show users

或者用JavaScript脚本文件:


mongo = new Mongo("localhost");
db = mongo.getDB("admin");
cur = db.system.users.find();
printjson(cur.toArray());
  •  删除用户
use admin
db,removeUser("testAdmin")
  •  创建用户管理员账户
use admin
db.createUser({
	user:"userAdmin",
	pwd:"test",
	roles:["userAdminAnyDatabase"]
});

创建用户管理员账号之后,使用-auth重启mongodb服务器,也可在配置文件中指定auth配置:

>mongod -dbpath "E:/Program Files/MongoDB/Server/4.0/data/
db" -auth

或者在配置文件mongod_config_auth.txt中设置auth = true

verbose = true
port = 27017
dbpath = E:\Program Files\MongoDB\Server\4.0\data\db\
auth = true
maxConns = 10

在mongodb shell中 访问数据库时,需要验证身份:

>use admin
>db,auth("useradmin","test")

或者在启动mongodb shell时就验证身份:

mongo -username "useradmin" -password "test"
  •  创建数据库管理员账户
mongo = new Mongo("localhost");
db = mongo.getDB("admin");
db.createUser({
	user:"dbaAdmin",
	pwd:"test",
	roles:[
	"readWriteAnyDatabase",
	"dbAdminAnyDatabase",
	"clusterAdmin"]
});

同样要验证身份 。

你可能感兴趣的:(mongoDB)