安装

安装依赖

  1. yum install libcurl openssl

安装 Server

点击 访问 MongoDB 下载地址,依次点击下图所示红框位置
image.png

  1. wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/5.0/x86_64/RPMS/mongodb-org-server-5.0.6-1.el7.x86_64.rpm
  2. rpm -ivh mongodb-org-server-5.0.6-1.el7.x86_64.rpm

Created symlink from /etc/systemd/system/multi-user.target.wants/mongod.service to /usr/lib/systemd/system/mongod.service.

安装 Shell

mogo

Linux 版本,命令行工具需要单独安装

  1. wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/5.0/x86_64/RPMS/mongodb-org-shell-5.0.6-1.el7.x86_64.rpm
  2. rpm -ivh mongodb-org-shell-5.0.6-1.el7.x86_64.rpm
  3. #即将弃用,直接删除
  4. rpm -e mongodb-org-shell-5.0.6-1.el7.x86_64

Warning: the “mongo” shell has been superseded by “mongosh”, which delivers improved usability and compatibility.The “mongo” shell has been deprecated and will be removed in an upcoming release. For installation instructions, see https://docs.mongodb.com/mongodb-shell/install/

卸载安装mongosh即可解决报错

mongosh

创建YUM源,vi /etc/yum.repos.d/mongodb-org-5.0.repo

  1. [mongodb-org-5.0]
  2. name=MongoDB Repository
  3. baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/$basearch/
  4. gpgcheck=1
  5. enabled=1
  6. gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
  1. yum install -y mongodb-mongosh

Warning: Found ~/.mongorc.js, but not ~/.mongoshrc.js. ~/.mongorc.js will not be loaded. You may want to copy or rename ~/.mongorc.js to ~/.mongoshrc.js.

新的mongosh在启动时读取.mongoshrc.js文件,传统的mongo读取.mongorc.js文件;只需要把.mongorc.js重命名或者复制一份改名为.mongoshrc.js即可。

  1. cp ~/.mongorc.js ~/.mongoshrc.js

网上一溜的的mongo --norc,不去加载.mongorc.js也是醉了,完全的逃避问题,不加载就没事了吗?

基本命令

  1. systemctl enable mongod
  2. systemctl start mongod
  3. systemctl restart mongod
  4. systemctl stop mongod

数据目录

MongoDB启动后会初始化以下目录和文件,并赋予mongod:mongod权限:

  • 默认配置文件:/etc/mongod.conf
  • 数据存储目录:/var/lib/mongo
  • 日志文件目录:/var/log/mongodb
  • 运行文件目录:/var/run/mongodb

    使用

    修改配置

    使用vi /etc/mongod.conf根据需要修改,更改端口、开启授权等等: ```json

    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:

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: authorization: enabled

operationProfiling:

replication:

sharding:

Enterprise-Only Options

auditLog:

snmp:

  1. <a name="xWPCP"></a>
  2. ## Shell 命令
  3. 如果安装了 Shell 工具的话,直接`mongo`或`mongosh`即可打开工具
  4. ```bash
  5. Current Mongosh Log ID: 6232f88f78db3f40f006cfa2
  6. Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.2.3
  7. Using MongoDB: 5.0.6
  8. Using Mongosh: 1.2.3
  9. For mongosh info see: https://docs.mongodb.com/mongodb-shell/
  10. test>

常用命令

  1. show dbs #显示数据库列表
  2. show collections #显示当前数据库中的集合(类似关系数据库中的表)
  3. show users #显示用户
  4. use <db name> #切换当前数据库,如果数据库不存在则创建数据库。
  5. db.help() #显示数据库操作命令,里面有很多的命令
  6. db.foo.help() #显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令
  7. db.foo.find() #对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据)
  8. db.foo.find( { a : 1 } ) #对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
  9. db.dropDatabase() #删除当前使用数据库
  10. db.cloneDatabase("127.0.0.1") #将指定机器上的数据库的数据克隆到当前数据库
  11. db.copyDatabase("mydb", "temp", "127.0.0.1") #将本机的mydb的数据复制到temp数据库中
  12. db.repairDatabase() #修复当前数据库
  13. db.getName() #查看当前使用的数据库,也可以直接用db
  14. db.stats() #显示当前db状态
  15. db.version() #当前db版本
  16. db.getMongo() #查看当前db的链接机器地址
  17. db.serverStatus() #查看数据库服务器的状态

创建账户

MongoDB 安装完成后,数据库admin中没有任何用户账户,MongoDB 向从本地主机发起的连接提供全面的数据库管理权限;因此配置 MongoDB 新实例时,首先需要创建用户管理员数据库管理员用户管理员可在 admin 和其他数据库中创建用户账户,数据库管理员将其作为管理数据库、集群、复制和 MongoDB 其他方面的超级用户

db.createUser

  1. db.createUser(
  2. {
  3. user: "$USERNAME",
  4. pwd: "$PASSWROD",
  5. roles: [
  6. { role: "$ROLE_NAME", db: "$DBNAME" }
  7. ]
  8. }
  9. )
  1. mongosh
  2. test> use admin
  3. switched to db admin
  4. db.createUser(
  5. {
  6. user: "admin",
  7. pwd: "12345678",
  8. roles: [
  9. { role: "userAdminAnyDatabase", db: "admin" }
  10. ]
  11. }

{ ok: 1 }

预定义角色

详细角色 角色 数据库
read:用户可以读取当前数据库的数据
readWrite:用户可以读写当前数据库的数据
数据库用户 所有数据库
dbAdmin:管理员用户但不能对用户和角色管理授权
dbOwner:数据库所有者可进行任何管理任务
userAdmin:可以管理当前数据的用户和角色
数据库管理 所有数据库
clusterAdmin:集群所有管理权限
clusterManager:集群管理和监控
clusterMonitor:集群监控,只读
hostManager:监控和管理服务器
集群管理 admin 数据库
backup:数据库的备份权限
restore:数据库的恢复权限
备份恢复 admin 数据库
readAnyDatabase:读取所有数据库
readWriteAnyDatabase:读写所有数据库
userAdminAnyDatabase:所有数据库的 userAdmin 权限
dbAdminAnyDatabase:所有数据库的 dbAdmin 权限
所有数据库 admin 数据库
root:超级用户 超级 admin 数据库
__system:所有操作权限 内部

登录

重启后重新登录,需要授权登录

  1. use admin
  2. db.auth("admin","12345678")

或者直接进入 shell 时:mongosh -u "admin" -p "12345678" --authenticationDatabase admin

报错

Using the XFS filesystem is strongly recommended with the WiredTiger storage engine.

See http://dochub.mongodb.org/core/prodnotes-filesystem
系统使用的是 EXT4 文件系统,官方建议:WiredTiger 存储引擎使用 XFS 文件系统,以避免在使用 EXT4 与 WiredTiger 时可能发生的性能问题;如果不能重新安装系统忽略即可,不影响正常使用

MMAPV1:MongoDB 的原始存储引擎,在第一个版本中引入,从 4.0 版本开始被弃用 WiredTiger:在 3.0 版本中引入插件式引擎,从 3.2 版本开始变成了默认的存储引擎

Access control is not enabled for the database. Read and write access to data and configuration is unrestricted

数据库未启用访问控制,创建管理员账户即可

/sys/kernel/mm/transparent_hugepage/enabled is ‘always’. We suggest setting it to ‘never’

  1. echo "never" > /sys/kernel/mm/transparent_hugepage/enabled

/sys/kernel/mm/transparent_hugepage/defrag is ‘always’. We suggest setting it to ‘never’

  1. echo "never" > /sys/kernel/mm/transparent_hugepage/defrag

ERROR: child process failed, exited with 14

  1. rm -rf /var/lib/mongo/mongod.lock
  2. /usr/bin/mongod --repair --dbpath=/var/lib/mongo

ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=14)

用户mongod没有对必需文件的写权限,导致数据库服务不能启动

  1. chmod 777 /etc/mongod.conf
  2. chown -R mongod:mongod /var/lib/mongo
  3. chown -R mongod:mongod /var/log/mongodb
  4. chown mongod:mongod /tmp/mongodb*.sock