安装

安装依赖

1
yum install libcurl openssl

安装 Server

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

1
2
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
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
2
3
4
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
rpm -ivh mongodb-org-shell-5.0.6-1.el7.x86_64.rpm
#即将弃用,直接删除
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
2
3
4
5
6
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/$basearch/
gpgcheck=1
enabled=1
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
2
3
wget -c https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.19.tgz
tar xzf mongodb-linux-x86_64-3.4.19.tgz
mv mongodb-linux-x86_64-3.4.19 /usr/local/mongodb

使用 vi/etc/profile.d/mongodb.sh 命令添加全局变量
1
exportPATH=$PATH:/usr/local/mongodb/bin

基本命令

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

数据目录

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

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

    使用

    修改配置

    使用 vi /etc/mongod.conf 根据需要修改,更改端口、开启授权等等:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    # 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:

    Shell 命令

    如果安装了 Shell 工具的话,直接 mongomongosh 即可打开工具
    1
    2
    3
    4
    5
    6
    7
    8
    Current Mongosh Log ID: 6232f88f78db3f40f006cfa2
    Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.2.3
    Using MongoDB: 5.0.6
    Using Mongosh: 1.2.3

    For mongosh info see: https://docs.mongodb.com/mongodb-shell/

    test>

    常用命令

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

    创建账户

    MongoDB 安装完成后,数据库admin中没有任何用户账户,MongoDB 向从本地主机发起的连接提供全面的数据库管理权限;因此配置 MongoDB 新实例时,首先需要创建用户管理员数据库管理员用户管理员可在 admin 和其他数据库中创建用户账户,数据库管理员将其作为管理数据库、集群、复制和 MongoDB 其他方面的超级用户
  • db.createUser
    1
    2
    3
    4
    5
    6
    7
    8
    9
    db.createUser(
    {
    user: "$USERNAME",
    pwd: "$PASSWROD",
    roles: [
    { role: "$ROLE_NAME", db: "$DBNAME" }
    ]
    }
    )
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    mongosh
    test> use admin
    switched to db admin
    db.createUser(
    {
    user: "admin",
    pwd: "12345678",
    roles: [
    { role: "userAdminAnyDatabase", db: "admin" }
    ]
    }

    { ok: 1 }

  • 预定义角色
  • 登录

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

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

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