1. 数据库分类
- 关系型数据库(RDBMS)
MySQL , Oracle , DB2 , SQL Sever ````` - 非关系型数据库(No SQL)
MongoDB , Redis ``````
MongoDB中层级关系
在MongoDB数据库中左侧的表就是collection
, 右侧的每条数据就是document
,document内以Bjson的形式保存数据内容。
document内内容格式:
2. MongoDB下载
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
tar zxvf mongodb-linux-x86_64-3.0.6.tgz
创建数据库存储路径以及日志路径
cd mongodb-linux-x86_64-3.0.6
mkdir -p data/db
mkdir -p data/logs
配置数据库启动配置文件 mongodb.conf
dbpath=your/path/to/data/db
logpath=your/path/to/data/logs/mongodb.log
logappend=true #以追加方式记录日志
fork=true #后台执行
port=27017 # 端口 ,可以自行设定,一般是四位或以上,最大不要超过65535
bind_ip=your ip # IP
auth=true # 是否需要用户名验证
启动数据库服务器,服务器用来保存数据
cd mongodb-linux-x86_64-3.0.6/bin
./mongod --config ../mongodb.conf
启动数据库客户端,客户端用来操作服务器,对数据库进行增删改查等操作。
./mongo IP:Port
出现>
表示连接成功
3.设置用户名密码:
https://docs.mongodb.com/manual/reference/built-in-roles/#built-in-roles
3.1 创建admin管理员用户
指定用户的角色和数据库:
(此时添加的用户都只用于admin数据库,而非存储业务数据的数据库)
#首先进入admin数据库 ,如果没有该库,会自动创建
use admin
db.createUser
创建管理员用户
db.createUser(
{ user: "zyf",
customData:{description:"superuser"},
pwd: "zyf",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
说明:
user
字段,为新用户的名字;
pwd
字段,用户的密码;
cusomData
字段,为任意内容,例如可以为用户全名介绍;
roles
字段,指定用户的角色,可以用一个空数组给新用户设定空角色。在roles字段,可以指定内置角色和用户定义的角色。
超级用户的role
有两种,userAdmin
或者userAdminAnyDatabase
(比前一种多加了对所有数据库的访问,仅仅是访问而已)。
db
是指定数据库的名字,admin是管理数据库。
不能用
admin数据库中的用户登录其他数据库。注:只能查看当前数据库中的用户,哪怕当前数据库admin数据库,也只能查看
admin数据库中创建的用户
。
3.2 创建一个业务数据库管理员用户
(普通用户账号,只负责一些数据库的增删改查等)
> use work_db
> db.createUser({
user:"zhangyf",
pwd:"zhangyf",
customData:{
name:'zyf',
email:'zyf@qq.com',
age:18,
},
roles:[
{role:"readWrite",db:"work_db"}
'read' # 对其他数据库有只读权限,对work_db是读写权限
]
})
说明:
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
7. 内部角色:__system
角色说明:
1. Read:允许用户读取指定数据库
2. readWrite:允许用户读写指定数据库
3. dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
4. userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
5. clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
6. readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
7. readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
8. userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
9. dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
10. root:只在admin数据库中可用。超级账号,超级权限
修改密码和用户信息
use work_db
db.runCommand(
{
updateUser:"username",
pwd:"xxx",
customData:{title:"xxx"}
}
)
创建好用户以后关闭数据库
,重新启动
进入相应数据库,db.auth("账号",“密码”)
登录账号信息,1 代表登陆成功
显示数据库
插入数据
db.work_db.insert("name":"孙悟空","gender":"男")
在客户端显示结果