官网下载符合自己操作系统的mongodb
rpm -ivh mongodb-org-server-4.0.10-1.el7.x86_64.rpm #服务端
rpm -ivh mongodb-org-shell-4.0.10-1.el7.x86_64.rpm #命令行连接 mongoDB
#rpm -ivh mongodb-org-tools-4.0.10-1.el7.x86_64.rpm #附加工具,例如数据导入导出
#rpm -ivh mongodb-org-mongos-4.0.10-1.el7.x86_64.rpm #部署集群
由于单机版mogodb即可满足要求,此处只需要安装前两个rpm包,
vi /etc/mongod.conf 修改默认的日志/数据存储目录
修改前:
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
修改后:
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /data/mongodb/logs/mongod.log
# Where and how to store data.
storage:
dbPath: /data/mongodb/data
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /data/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1
bindIp: 0.0.0.0
#,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
#security:
security:
authorization: enabled #注意缩进,参照其他的值来改,若是缩进不对可能导致后面服务不能重启
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
此外还需要修改/usr/lib/systemd/system/mongod.service文件中的
PIDFile=/data/mongodb/mongod.pid 否则无法启动成功
systemctl daemon-reload
systemctl start mongod
systemctl enable mongod
启动mongodb:
mongo --port 27017
use命令用于创建数据库(如果没有该数据库,有的话直接进入该库),创建的库是平行等级的
切换到admin数据库:
>use admin
创建管理员账户并赋予权限(用于管理所有数据库):
> db.createUser({user:"admin",pwd:"1qaz#EDC",roles:[{role:"root", db:"admin"}]})
user:”用户名“,
pwd:"密码”,
roles:[{role:"角色名“, db:"角色所属数据库”}, {role:"角色名2“, db:"角色所属数据库2”},.....]
新增的用户在 db.system.users 中
> db.getCollectionNames()
[ "system.indexes", "system.users", "system.version" ]
验证用户是否创建成功:
> db.auth("admin","1qaz#EDC")
1
> exit
杀掉进程,重启mongoDB服务:
ps -ef | grep mongod
kill -9 pid
带认证模式开启Mongod:
mongod --auth --config /etc/mongod.conf
进入账户所属数据库,再认证
> use admin
switched to db admin
> db.auth("用户名","密码")
1
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
#这样登陆成功了
在admin中添加数据库job_ret_err:
> use job_ret_err
switched to db job_ret_err
> db
runoob
>show dbs
可以看到,刚才创建的数据库job_ret_err不在数据库的列表中,要显示它,还需要向job_ret_err数据库插入一些数据
>db.job_ret_err.insert({"qwertyuiop":"json"})
>show dbs
---------------------------------------------------------------通过压缩包安装---------------------------------------------------------------------------------
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.10.tgz 任意目录下解压,然后复制到/data/mongodb/目录下
mv /解压到的目录/mongodb-linux-x86_64-rhel70-4.0.10/* /data/mongodb
配置环境变量
vi /etc/profile 在文件的最后添加:
MONGODB_HOME=/data/mongodb
MONGODB_PATH=$PATH:$MONGODB_HOME/bin
export MONGODB_PATH
source /etc/profile 令环境变量立即生效
mkdir -p /data/mongodb/data
mkdir -p /data/mongodb/logs
touch /data/mongodb/mongodb.conf 创建配置文件
#####################mongodb.conf内容####################
port=27017 #端口
dbpath=/data/mongodb/data #数据库存文件存放目录
logpath=/data/mongodb/logs/mongodb.log #日志文件存放路径
logappend=true #使用追加的方式写日志
fork=true #以守护程序的方式启用,即在后台运行
maxConns=100 #最大同时连接数
auth=true #启用验证
journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。
#即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。
storageEngine=wiredTiger #存储引擎有mmapv1、wiretiger、mongorocks
bind_ip=0.0.0.0 #这样就可外部访问了,例如从win10中去连虚拟机中的MongoDB
##########################################################
mongod --config /data/mongodb/mongodb.conf 启动
mongod --config /data/mongodb/mongodb.conf --shutdown 关闭
创建用户与数据库等操作同上
-------------------------------------------------------------docker安装mongo----------------------------------------------------------------------------
docker pull 镜像仓库/mongo:标签
docker images查看镜像是否下载成功
docker run --name mongodb -v /data/mongodb/data:/data/db -p 27017:27017 -d public-docker-virtual.artnj.zte.com.cn/mongo:4.0.7 --auth 以认证方式启动容器
docker exec -it c049b9096de1 mongo admin 进入容器
db.createUser({ user: 'admin', pwd: '1qaz#EDC', roles: [{ role: "root", db: "admin" }]}); 创建用户
db.auth("admin","1qaz#EDC") 认证
exit
docker exec -it c049b9096de1 mongo admin 再次进入容器
mongo 进入mongo
use jobResult 创建集合
db 显示集合
show dbs
db.jobResult({"logId":"redvfkcnwdore","res":"dvfkcneswfoiore"})