因业务发展需要存储一些非结构化数据,并且需要对这些数据进行增删改查。调研发现mongodb满足需求并且使用门槛低,所以单机部署试试效果。
地址:https://www.mongodb.com/try/download/community
首页进去会显示最新版本,但我这边之前安装的是5.0.5的版本,所以我这次也是在历史版本里面下载的5.0.5版本,如下:
建议下载.tgz文件,文件上传到服务器就可以安装了。
首先说一下安装规划,我打算把所有mongodb的文件都放在同一个文件夹下,这样以后好运维。
mkdir /apps/program/mongodb
解压.tgz文件到上述目录
tar -zxvf mongodb-linux-x86_64-rhel70-5.0.5.tgz -C /apps/program/mongodb/
可以在相应目录看到一个新的文件夹
mongodb 目录下分别创建etc, data, logs 文件夹,规划分别放入 配置,数据,日志文件。
进入到 etc 目录,创建配置文件 mongodb.conf
# 数据库数据存放目录
dbpath=/apps/program/mongodb/data
# 数据库日志存放目录
logpath=/apps/program/mongodb/logs/mongodb.log
# 以追加的方式记录日志
logappend = true
# 端口号 默认为27017
port=27017
# 以后台方式运行进程
fork=true
# 开启用户认证
auth=true
# 访问数据库绑定的ip地址,全是0表示任何地址都可以
bind_ip=0.0.0.0
# 这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
进入到 mongodb 的 bin 目录下
执行启动命令
./mongod --config /apps/program/mongodb/etc/mongodb.conf
如果启动不成功请查看日志文件,里面会有提示。
在 bin 目录下执行下述命令
# 进入mongo
./mongo
# 切换到 admin 数据库
use admin
# 创建超级用户 manager
db.createUser({user:'manager',pwd:'654321',roles:[{role:'root',db:'admin'}]})
# 用户认证,认证后才可查看和操作数据库
db.auth('manager','654321')
# 进入数据库,bin目录下执行
./mongo
# 切换到 admin 数据库
use admin
# 超级用户登录
db.auth('manager','654321')
# 创建新的数据库
use db_table
# 创建普通用户并赋予读写权限
db.createUser({user:'table',pwd:'123456',roles:[{role:'readWrite',db:'db_table'}]})
附录:用户角色(role字段)说明
角色 | 说明 |
---|---|
read | 允许用户读取指定数据库 |
readWrite | 允许用户读写取指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问 |
userAdmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 |
readAnyDatabas | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限 |
root | 只在admin数据库中可用。超级账号,超级权限 |
补充:正确关闭数据库
# 方式一
./mongo
# 只有在admin数据库才能执行关闭
use admin
# 如果数据库已经开启认证的话,需要先认证
db.auth('manager','654321')
# 执行关闭
db.shutdownServer()
# 方式二
./mongod --shutdown -f [配置文件]
# 方式三(此法不安全,非必要不使用)
ps -ef|grep mongo
kill -15 [pid]
我这边只用过 NOSQLBooster,整体来说还可以,官网下载地址:https://nosqlbooster.com
填写基本信息:
填写认证信息:
点击测试:
测试结果显示 ok 就表示连接没问题:
连接以后就可以创建数据库、集合了:
mongodb 4.x版本后命令行工具需要单独安装,下载地址:mongodb-tools,解压后可直接使用。
一些常用命令:
//备份
mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表 -o 文件存放路径
参数说明:
-h 指明数据库宿主机的IP
--port 指明数据库的端口
-u 指明数据库的用户名
-p 指明数据库的密码
-d 指明数据库的名字
-c 指明collection的名字
-o 指明到要导出的文件名
-q 指明导出数据的过滤条件
//恢复
mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径
参数说明:
--drop:先删除所有的记录,然后恢复
//导出
mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -q 条件导出 --csv -o 文件名
参数说明:
-f 导出指定字段,以逗号分割,-f id,name导出id,name这三个字段
-q 可以根据查询条件导出,-q '{ "id" : "100" }' 导出id为100的数据
--csv 表示导出的文件格式为csv的
//导入
mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名
参数说明:
--upsert:插入或者更新现有数据