MongoDB的安装及初步使用

342 阅读7分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情

MongoDB三种安装方式

一、MongoDB的安装

1-1、linux安装MongoDB

1-1-1、环境准备:

  • linux系统: centos7
  • 安装MongoDB社区版

下载MongoDB Community Server

下载地址:www.mongodb.com/try/downloa…

image.png

#下载MongoDB 
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.9.tgz 
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.9.tgz

1-1-2、启动MongoDB Server

#创建dbpath和logpath 
mkdir -p /mongodb/data /mongodb/log 
#进入mongodb目录,启动mongodb服务 
bin/mongod --port=27017 --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log \ --bind_ip=0.0.0.0 --fork

--dbpath :指定数据文件存放目录

--logpath :指定日志文件,注意是指定文件不是目录

--logappend :使用追加的方式记录日志

--port:指定端口,默认为27017

--bind_ip:默认只监听localhost网卡

--fork: 后台启动

--auth: 开启认证模式

image.png

1-1-3、添加环境变量

修改/etc/profile,添加环境变量,方便执行MongoDB命令

export MONGODB_HOME=/usr/local/soft/mongodb 
PATH=$PATH:$MONGODB_HOME/bin

然后执行source /etc/profile 重新加载环境变量

1-1-4、利用配置文件启动服务

编辑/mongodb/conf/mongo.conf文件,内容如下:其中如果是用虚拟机最好配置一下缓存大小,防止无法启动

systemLog:
  destination: file
  path: /mongodb/log/mongod.log # log path
  logAppend: true
storage:
  dbPath: /mongodb/data # data directory
  engine: wiredTiger #存储引擎
  journal: #是否启用journal日志
    enabled: true
  wiredTiger:  #配置内存缓存为512MB
    engineConfig:
      configString : cache_size=512M
net:
  bindIp: 0.0.0.0
  port: 27017 # port
processManagement:
  fork: true

注意:一定要yaml格式

启动mongod

mongod -f /mongodb/conf/mongo.conf

-f 选项表示将使用配置文件启动mongodb

1-1-5、关闭MongoDB服务

方式1:

mongod --port=27017 --dbpath=/mongodb/data --shutdown

image.png

方式2: 进入mongo

mongo

image.png

切换到admin,进行退出

use admin 
db.shutdownServer()

如下图,停止之后,再次使用show dbs提示无法连接

image.png

1-2、Mongo shell使用

mongo是MongoDB的交互式JavaScript Shell界面,它为系统管理员提供了强大的界面,并为开发人员提供了直接测试数据库查询和操作的方法。

bin/mongo --port=27017 
bin/mongo localhost:27017

--port:指定端口,默认为27017

--host:连接的主机地址,默认127.0.0.1

image.png

1-2-1、JavaScript支持

mongo shell是基于JavaScript语法的,MongoDB使用了SpiderMonkey作为其内部的JavaScript解释器引擎,这是由Mozilla官方提供的JavaScript内核解释器,该解释器也被同样用于大名鼎鼎的Firefox浏览器产品之中。SpiderMonkey对ECMA Script标准兼容性非常好,可以支持ECMA Script 6。可以通过下面的命令检查JavaScript解释器的版本:

image.png

1-2-2、mongo shell常用命令

命令说明
show dbs 或者 show databases显示数据库列表
use 数据库名切换数据库,如果不存在创建数据库
db.dropDatabase()删除数据库
show collections 或者 show tables显示当前数据库的集合列表
db.集合名.stats()查看集合详情
db.集合名.drop()删除集合
show users显示当前数据库的用户列表
show roles显示当前数据库的角色列表
show profile显示最近发生的操作
load("xxx.js")执行一个JavaScript脚本文件
exit 或者 quit()退出当前shell
help查看mongodb支持哪些命令
db.help()查询当前数据库支持的方法
db.集合名.help()显示集合的帮助信息
db.version()查看数据库版本

1-2-3、数据库操作

#查看所有库 
show dbs 
# 切换到指定数据库,不存在则创建 
use test 
# 删除当前数据库 
db.dropDatabase()

1-2-4、集合操作

#查看集合 
show collections 
#创建集合 
db.createCollection("emp") 
#删除集合 
db.emp.drop()

1-2-5、创建集合语法

db.createCollection(name, options)

options参数

| 字段 | 类型 | 描述| | ------ | -- | -------------- | | | capped | 布尔 | (可选)如果为true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 | | size | 数值 | (可选)为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段。 | | max | 数值 | (可选)指定固定集合中包含文档的最大数量。

注意: 当集合不存在时,向集合中插入文档也会创建集合

1-3、安全认证

1-3-1、创建管理员账号

  # 设置管理员用户名密码需要切换到admin库
  use admin
  #创建管理员
  db.createUser({user:"jony",pwd:"111111",roles:["root"]})
  # 查看当前数据库所有用户信息 
  show users
  #显示可设置权限
  show roles
  #显示所有用户
  db.system.users.find()

创建用户命令如下: image.png

1-3-2、常用权限

权限名描述
read允许用户读取指定数据库
readWrite允许用户读写指定数据库
dbAdmin允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
dbOwner允许用户在指定数据库中执行任意操作,增、删、改、查等
userAdmin允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
clusterAdmin只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
root只在admin数据库中可用。超级账号,超级权限

重新赋予用户操作权限

db.grantRolesToUser( "jony" , [
  { role: "clusterAdmin", db: "admin" } ,
  { role: "userAdminAnyDatabase", db: "admin"},
  { role: "userAdminAnyDatabase", db: "admin"},
  { role: "readWriteAnyDatabase", db: "admin"}
])

删除用户

db.dropUser("jony") 
#删除当前数据库所有用户  
db.dropAllUser()

用户认证,需要注意的是,需要切换到对应db中,再给对应的用户授权,否则会授权失败;进入对应的库中授权,返回1表示认证成功,只有授权成功才能进行登录,否则无法登录

image.png

使用授权后的用户登录,这样就只能看到账号自己的数据库了

image.png

1-3-3、创建应用数据库用户

use appdb 
db.createUser({user:"appdb",pwd:"111111",roles:["dbOwner"]})

默认情况下,MongoDB不会启用鉴权,以鉴权模式启动MongoDB

mongod -f /mongodb/conf/mongo.conf --auth

启动授权之后,再使用mongo就无法访问数据库了 image.png

启用鉴权之后,连接MongoDB的相关操作都需要提供身份认证。

mongo 192.168.253.131:27017 -u jony -p 111111 --authenticationDatabase=admin

image.png

二、Docker安装

hub.docker.com/_/mongo?tab…

#拉取mongo镜像
docker pull mongo:4.4.10
#运行mongo镜像
docker run --name mongo-server -p 29017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=fox \
-e MONGO_INITDB_ROOT_PASSWORD=fox \
-d mongo:4.4.10 --wiredTigerCacheSizeGB 1

默认情况下,Mongo会将wiredTigerCacheSizeGB设置为与主机总内存成比例的值,而不考虑你可能对容器施加的内存限制。

MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_PASSWORD都存在就会启用身份认证(mongod --auth)

#进入容器
  docker exec -it mongo-server  bash
  #进入Mongo shell
  mongo -u fox -p fox
#创建用户,赋予test库的操作权限
  >use test
  >db.createUser({user:"dcl",pwd:"123456",roles:["readWrite"]})  

image.png

进入mongo shell

#远程连接 
mongo 192.168.65.97:29017 -u dcl -p 123456

dcl用户只具备test库的readWrite权限

image.png

三、MongoDB工具

3-1、官方GUI工具——COMPASS

MongoDB图形化管理工具(GUI),能够帮助您在不需要知道MongoDB查询语法的前提下,便利地分析和理解您的数据库模式,并且帮助您可视化地构建查询。

下载地址:www.mongodb.com/zh-cn/produ…

image.png

3-2、GUI工具—— Robo 3T(免费)

下载地址:robomongo.org/

image.png

3-3、GUI工具——Studio 3T(收费,试用30天)

下载地址:studio3t.com/download/

3-4、MongoDB Database Tools

下载地址:www.mongodb.com/try/downloa…

文件名称作用
mongostat数据库性能监控工具
mongotop热点表监控工具
mongodump数据库逻辑备份工具
mongorestore数据库逻辑恢复工具
mongoexport数据导出工具
mongoimport数据导入工具
bsondumpBSON格式转换工具
mongofilesGridFS文件工具