nicenote/docs/db/mongodb/intro.md
2021-10-20 12:01:04 +08:00

5.8 KiB
Raw Blame History

nav group
title path
数据库 /db
title order
💊 mongoDB 1

💊 mongoDB

mac 安装

1.1 到官网下载指定版本的安装包

https://www.mongodb.com/try/download/community?jmp=nav

1.2 将安装包放到指定文件夹

open /usr/local

1.3 配置数据库data目录

sudo mkdir -p /data/db

1.4 配置环境变量

# 1. 打开 bash 文件
open ~/.bash_profile

# 2.  bash 中写入
PATH=$PATH:/usr/local/mongoDB/bin

# 3. 保存 bash并触发生效
source ~/.bash_profile

1.5 启动 mongodb

mongod --dbpath /usr/local/mongodb/db

mongod --dbpath /usr/local/mongodb/db  -f /etc/mongod.conf

centOS安装

2.1 添加源

  - sudo vi /etc/yum.repos.d/mongodb-org-4.0.repo

2.2 添加配置信息

  - [mongodb-org-4.0]
  - name=MongoDB Repository
  - baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
  - gpgcheck=1
  - enabled=1
  - gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

2.3 安装

  - sudo yum install -y mongodb-org

2.4 检验

  - rpm -qa |grep mongodb
  - rpm -ql mongodb-org-server

2.4 启动服务

  - 建议加上 --auth 权限验证
  - service mongod start
  - systemctl start mongod.service

通过本地文件启动mongod -f /usr/local/mongodb/mongodb.conf

2.5 查看端口

  - netstat -natp | grep 27017

2.6 查看是否成功

  - ps -aux | grep mongod # 查看数据库的进程是否存在

2.7 开机自启

  - chkconfig mongod on
  - systemctl enable mongod.service

2.8 关闭

pkill mongod

目录介绍

配置文件:

/etc/mongod.conf

port=27017 #端口
dbpath=/usr/local/mongodb/db #数据库文件存放目录
logpath=/usr/local/mongodb/logs/mongodb.log #日志文件存放路径
logappend=true #使用追加的方式写日志
fork=true #以守护进程的方式,创建服务器进程
maxConns=100 #最大同时连接数
journal=true #每次写入会记录一条操作日志
bind_ip=0.0.0.0 #可外部访问
auth=true #用户认证

数据库保存目录:

  - /usr/local/mongodb/db

日志目录:

  - /usr/local/mongodb/logs/mongodb.log

如果需要修改数据目录和日志目录,只需修改 /etc/mongod.conf 中的 storage.dbPath 和 systemLog.path 即可。

卸载

4.1 关闭服务

service mongod stop

or

systemctl stop mongod.service

4.2 删除相关的包

yum erase $(rpm -qa | grep mongodb-org)

4.3 删除目录和文件

rm -r /var/log/mongodbrm -r /var/lib/mongo

4.4 彻底卸载

sudo yum erase $(rpm -qa | grep mongodb-org) # 卸载
MongoDB sudo rm -r /var/log/mongodb # 删除日志文件
sudo rm -r /var/lib/mongo # 删除数据文件

常见命令

登录

 mongo '数据库名' -u '用户名' -p '密码'

重启

sudo service mongod restart

查看日志

/var/log/mongo/mongod.log

命令行打开

 sudo mongod --port 27017 --dbpath /data/db --bind_ip 0.0.0.0 --auth -f /etc/mongod.conf

用户权限

权限列表

  • .1. 数据库用户角色read、readWrite;
  • .2. 数据库管理角色dbAdmin、dbOwner、userAdmin
  • .3. 集群管理角色clusterAdmin、clusterManager、clusterMonitor、hostManager
  • .4. 备份恢复角色backup、restore
  • .5. 所有数据库角色readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  • .6. 超级用户角色root
  • // 这里还有几个角色间接或直接提供了系统超级用户的访问dbOwner 、userAdmin、userAdminAnyDatabase
  • .7. 内部角色__system

新增用户

// 切换根数据库
use admin
// 创建用户
db.createUser({user:"h5creator",pwd:"123456mjw",roles:[{role:"dbAdmin",db:"test"}]})
// 登录用户
db.auth(${name}, ${pwd})

修改用户权限

db.grantRolesToUser("h5creator",[{role:"readWrite", db:"test"}])

更新字段

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,	// 如果不存在update的记录是否插入objNew,true为插入默认是false不插入。
     multi: <boolean>,	// 默认是false,只更新找到的第一条记录如果这个参数为true,就把按条件查出来多条记录全部更新
     writeConcern: <document> // 抛出异常的级别
   }
)

// 删除一个 key 字段
db.collection.update({},{"$unset":{"key":""}},{multi:true})

// 新增一个 type 字段
db.getCollection('article').update({}, {$set: {type:NumberInt('1')}}, {multi: true})

开发对外端口

方案一

 systemctl status firewalld # 查看防火墙状态
 firewall-cmd --zone=public --add-port=27017/tcp --permanent # mongodb默认端口号
 firewall-cmd --reload # 重新加载防火墙
 firewall-cmd --zone=public --query-port=27017/tcp # 查看端口号是否开放成功输出yes开放成功no则失败

方案二

 iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT

偶遇问题

  - 解决方案:删除该文件

2) Unable to lock file: /var/lib/mongo/mongod.lock

  - 解决方案:清空该文件内容

3) 无法持续运行在后台

  - 解决方案mongod --fork --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/mongodb2.log --logappend
  1. 无法启动 mongodb
  1. 进入 mongod 上一次启动的时候指定的 data 目录 --dbpath=/data/mongodb

删除掉该文件:

rm /data/db/mongo.lock 2. 修复

./mongod --repair