MongoDB对数据库,用户权限的操作

MongoDB

1.简介

MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongDB会自动的将域(字段)设置为主键(primary key),MongDB也可以添加索引,但是MongoDB不支持join连接,但是支持嵌入文档

在这里插入图片描述

2.MongDB支持的数据类型

String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。

Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean 布尔值。用于存储布尔值(真/假)。
Double 双精度浮点值。用于存储浮点值。
Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Array 用于将数组或列表或多个值存储为一个键。
Timestamp 时间戳。记录文档修改或添加的具体时间。
Object 用于内嵌文档。
Null 用于创建空值。
Symbol 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。

Object ID 对象 ID。用于创建文档的 ID。  (每个文档都有)
Binary Data 二进制数据。用于存储二进制数据。
Code 代码类型。用于在文档中存储 JavaScript 代码。
Regular expression 正则表达式类型,用于存储正则表达式

下载安装mongodb

  1. 将mongodb上传至虚拟机的根目录中
  2. 解压mongodb:tar -zxf mongodb-shell-linux-x86_64-amazon-5.0.3.tgz
  3. 将解压过后的mongodb复制到/usr/local目录下:cp mongodb-linux-x86_64-amazon-5.0.3 /usr/local/mongodb -rf

mongodb的data目录的创建和使用

mongodb的数据存储在data目录的db目录下,这个目录子啊安装过程中不会自动创建,此目录可以创建在任意位置上

  1. 进入/usr/local/mongodb创建data/db:mkdir -p data/db

mongodb的启动和关闭

mongodb的前置启动

1.所谓的前置启动就是mongodb启动的时候会占用当前窗口
2. 在mongodb的bin目录下的执行,执行时需要加–dbpath是因为启动时如果不指定会默认在根目录寻找mongodb:./mongod --dbpath /usr/local/mongodb/data/db
4. 可以查看此时监听的是:27017端口
5. 开启一个新的窗口,在新的窗口输入:ps aux|grep mongodb可以查看mongdb的进程

后置启动

1.所谓的后置启动就是以守护进程的方式来启动,在启动的时候需要添加–fork配合–logpath来指定日志输出的文件夹,此文件夹可以在任意位置
2. 在/usr/local/mongodb下创建log文件夹:mkdir log
3. 在该目录下创建mongodb.log文件(此文件名可以随意定义):touch mongodb.log
4. 回到bin目录下执行;./mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/log/mongodb.log --fork
在这里插入图片描述

通过配置文件的方式来启动mongodb

利用配置文件的key-value的结构来配置启动的参数,配置文件可以在任意的文件夹中,配置文件的扩展名应该为.conf

  1. 在mongodb目录下创建一个etc目录,在该目录中创建一个mongodb.conf的配置文件:mkdir etc,touch mongodb.conf
  2. 在配置文件中配置
dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/log/mongodb.log
port=27017
bind_ip=0.0.0.0
fork=true
  1. 关闭已经开启的mongodb:./mongod --shutdown --dbpath /usr/local/mongodb/data/db/
  2. 在bin目录下执行: ./mongod --config /usr/local/mongodb/etc/mongodb.conf

将mongodb的bin目录配置到环境变量中,使得可以在任意目录下都能启动mongodb

  1. 打开etc/profile:vim /etc/profile
  2. 配置环境变量:#设定mongodb的环境变量
    export PATH=/usr/local/mongodb/bin:$PATH
  3. 重新加载资源:. /etc/profile
  4. 输入mongd --help查看配置是否生效

关闭mongodb

  1. 进入/usr/local/mongodb/bin目录
  2. 执行:./mongo进入客户端
  3. 进入admin库:use admin
  4. 执行关闭库函数:db.shutdownServer()

使用./mongod --shutdown --dbpath 的方式关闭mongodb

  1. ./mongod --shutdown --dbpath [mongodb数据库的全路径]

mongodb的用户与权限管理

  1. 用户权限列表
    在这里插入图片描述

创建一个数据库管理用户(具备管理普通用户的管理员用户:在admin库中赋予userAdminAnyDatabase)

  1. 打开mongodb的客户端:./mongo
  2. 切换至admin库中:use admin
  3. 查看admin中的用户: db.system.users.find()目前没有用户所以不会没有显示

db.createUser函数

在这里插入图片描述

创建管理员用户

  1. 在admin库中输入:db.createUser({user:“mubaidbm”,pwd:“mubaidbmpwd”,roles:[{role:“userAdminAnyDatabase”,db:“admin”}]})
  2. 在管理员账户创建用户完毕后需要重启mongobd:db.shutdownServer()

使用权限的方式启动MongoDB

在默认情况下mongodb是不开启权限验证的,如果添加了用户就需要开启用户认证机制

  1. 修改/usr/local/mongodb/etc/mongodb.conf
dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/log/mongodb.log
port=27017
bind_ip=0.0.0.0
fork=true
auth=true
  1. 启动mongodb
  2. 打开客户端输入:use admin
  3. 输入:db.system.users.find()会报错,因为数据库开启了权限的校验
  4. 输入:db.auth(‘mubaidbm’,‘mubaidbmpwd’)返回1则校验成功,返回0则为校验失败
  5. 登录成功后便可以查询用户了:db.system.users.find()

创建普通用户

管理员创建普通用户,指定操作某个数据库(在那个数据库下创建的该用户就要在那个数据库中认证)

  1. 创建wcg数据库,给该数据库添加一个用户,用户名为mm1,密码为mm1
    pwd
  2. 创建wcg(在mongodb数据库中切换数据库如果数据库不存在则会自动创建一个数据库
  3. 创建普通用户:db.createUser({user:“mm1”,pwd:“mm1pwd”,roles:[{role:“readWrite”,db:“wcg”}]})

使用普通用户

  1. 打开一个新的客户端
  2. 使用wcg这个数据库
  3. 打开客户端
  4. 登录普通用户,如果不登录则无法对数据库就行新增
  5. 新增数据:db.wcg.insert({id:“1000”})
  6. 查看数据库的数据:db.wcg.find()

更新用户角色

如果我们需要对已经存在的用户的角色做修改,可以使用 db.updateUser()函数来更新角色,使用该函数需要当前用户具有userAdminAnyDatabase或者更高的权限

  1. 更新角色的语法:db.updateUser(“用户名”,{“role”:“角色名称”},{“更新项2”:“更新内容”}}
  2. 为mubaidbm的userAdminAnyDatabase用户管理角色(用户管理角色,可以为自己也可以为别人的角色更新)更改为dbAdminAnyDatabase数据库管理角色:db.updateUser(“mubaidbm”,{roles:[{“role”:“userAdminAnyDatabase”,“db”:“admin”},{“role”:“dbAdminAnyDatabase”,“db”:“admin”}]})

更新用户密码

  1. 使用db.updateUser()函数更新密码:db.updateUser(‘mubaidbm’,{“pwd”:“mubaidbm123456”})
  2. 使用db.changeUserpassword()函数更新密码:db.changeUserPassword(‘mubaidbm’,“mubaidbmpwd”)
  3. 退出客户端,使用新密码登录

删除用户

通过db.dropUser()函数删除指定用户,需要切换到该用户所指定的数据库中才能删除,需要具有userAdminAnyDatebase

  1. 删除mm1用户
  2. 切换到wcg数据库
  3. 删除mm1用户:db.dropUser(“mm1”)

mongodb的数据库操作

  1. 创建wcgtest数据库:usewcgtest
  2. 查看所有的数据库:使用show dbs命令查看当前mongodb中所有的数据库(如果开启了权限认证,需要先登录才能查看,且只能查看操作过的数据库,普通用户只能查看他能操作的数据库)
  3. 删除数据库(切换到需要删除的数据库中)执行:db.dropDatabase()
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值