MongoDB4.0 的安装与使用

1、在 CentOS 7 中安装 MongoDB4.0

1.1 添加 MongoDB 的存储库

MongoDB 并没有在 CentoOS/RHEL 的基础存储库中。但是 MongoDB 维护了一个专用的存储库。让我们添加一下这个库:

vim /etc/yum.repos.d/mongodb.repo

添加以下信息到该文件中:

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

1.2 安装 MongoDB

当你添加完 MongoDB 的存储库后,运行如下命令,进行安装:

yum -y install mongodb-org

mongodb-org,是一个元安装包,它包含了如下组件。

  • mongodb-org-server – mongodb的守护进程、配置与初始化脚本
  • mongodb-org-mongos – MongoDB 碎片守护进程
  • mongodb-org-shell – MongoDB 的命令行
  • mongodb-org-tools – 一个 MongoDB 的工具集,含导入,导出,备份等等。

1.3 Linux ulimit 配置

一般情况下,大多数系统都使用的是低配置。这些低配置可能会导致 MongoDB 系统出现问题。所以我们需要增强这些配置值。在路径 /etc/security/limits.d 文件夹中创建一个 limit 文件。

vim /etc/security/limits.d/99-mongodb-nproc.conf

设置更高值。

mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 64000
mongod hard nproc 64000

1.4 MongoDB 服务的相关操作

启动一个 MongoDB 服务,执行:

systemctl start mongod
//or service mongod start

关闭一个 MongoDB 服务,执行:

systemctl stop mongod

重启一个 MongoDB 服务,执行:

systemctl restart mongod

检查 MongoDB 服务状态,执行:

systemctl status mongod

将输出:

 mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-06-27 03:57:31 UTC; 10s ago
     Docs: https://docs.mongodb.org/manual
  Process: 1519 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 1517 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 1515 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 1514 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)
 Main PID: 1522 (mongod)
   CGroup: /system.slice/mongod.service
           └─1522 /usr/bin/mongod -f /etc/mongod.conf

Jun 27 03:57:30 mongoc7 systemd[1]: Starting MongoDB Database Server...
Jun 27 03:57:30 mongoc7 mongod[1519]: 2018-06-27T03:57:30.236+0000 I CONTROL  [main] Automatically disablin...none'
Jun 27 03:57:30 mongoc7 mongod[1519]: about to fork child process, waiting until server is ready for connections.
Jun 27 03:57:30 mongoc7 mongod[1519]: forked process: 1522
Jun 27 03:57:31 mongoc7 systemd[1]: Started MongoDB Database Server.
Hint: Some lines were ellipsized, use -l to show in full.

检查 MongoDB 版本:

mongod --version

输出:

db version v4.0.0-rc7
git version: 7230641bb09b1ceb04c3135cf83a5044c4838906
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
allocator: tcmalloc
modules: none
build environment:
    distmod: rhel70
    distarch: x86_64
    target_arch: x86_64

使用 netstat 命令,检查 MongoDB 服务是否正在监听端口“27017”

netstat -antup | grep -i 27017

输出:

tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      1522/mongod

1.5 访问 MongoDB

使用以下命令连接 MongoDB 数据库

mongo

如果提示

2018-06-27T03:57:31.469+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-06-27T03:57:31.469+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.

解决这个将,需要编辑 MongoDB 配置文件,并开启访问控制。

vim /etc/mongod.conf

在该文件末尾添加如下内容。

security:
  authorization: enabled

然后重启服务。
引用:如何在Centos7中安装MongoDB4.0

2、MongoDB 用户管理

db.createUser 官方文档

2.1 创建管理员用户

关闭权限验证。在配置文件/etc/mongod.conf中,如果存在则注释security.authorization: enabled行。

使用命令db.createUser创建管理员

use admin
db.createUser({
    user: "admin",
    pwd: "admin",
    roles:[{
        role:"root",
        db:"admin"
    }]
})
db.auth("admin", "admin")

需要注意的地方:在 windows 端使用 mongodb 的客户端创建用户的密码与在 linux 端使用 mongo 命令进入创建的用户的密码是不一致。当前未发现原因。所以该命令仍然需要在 linux 端去执行。

MongoDB 权限列表:

  • read
  • readWrite
  • dbAdmin – 提供执行管理任务,此角色不提供用户与角色权限管理
  • dbOwner – 数据库的所有者。此角色组合了 readWrite, dbAdmin 和 userAdmin 角色的所有权限
  • userAdmin – 提供在当前数据管理操作用户角色和用户管理的功能。
  • clusterAdmin – 集群管理角色
  • clusterMonitor – 集群中提供监控管理角色
  • hostManager – 提供监视和管理服务器的角色
  • backup – 备份和恢复的角色 
  • readAnyDatabase
  • readWriteAnyDatabase
  • userAdminAnyDatabase
  • dbAdminAnyDatabase
  • root – 所有的权限的结合

引用:mongodb 内置权限列表

3、导入 CSV 格式数据至 MongoDB 中

待续…

其它引用
robot3T MongoDB GUI