在ubuntu 18上安装MongoDB

本文介绍 MongoDB Community EditionUbuntu 下的安装和常见配置方法。文中操做基于 MongoDB Community Edition 4.2.2Ubuntu 18.04 。对于不一样的系统和版本,操做方式和方法可能会有不一样。html

基础安装

本节简单讲解在Ubuntu下 MongoDB 基本的安装步骤。linux

  1. 安装GPG公钥
    wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
  2. 添加APT源
    echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
  3. 重载本地包数据库
    sudo apt-get update
  4. 安装mongoDB
    sudo apt-get install -y mongodb-org
  5. 检查mongoDB包安装信息
    apt list --installed mongodb*
    正常状况下,能够看到如下信息
    mongodb-org/bionic,now 4.2.2 amd64 [installed]
    mongodb-org-mongos/bionic,now 4.2.2 amd64 [installed]
    mongodb-org-server/bionic,now 4.2.2 amd64 [installed]
    mongodb-org-shell/bionic,now 4.2.2 amd64 [installed]
    mongodb-org-tools/bionic,now 4.2.2 amd64 [installed]
  6. 启动系统服务
    sudo systemctl enable mongod.service
    sudo systemctl start mongod.service
  7. 检查服务状态
    systemctl status -l mongod.service
    若是 mongod.service 的状态不是 active(running) ,能够根据 systemctl status 命令的输出和日志文件 /var/log/mongodb/mongod.log 来排查问题缘由。

客户端链接

MongoDB 服务启动成功后,能够使用 MongoDB JavaScript Shell 客户端来访问数据库了:mongodb

mongo --host 127.0.0.1 --port 27017

默认配置下,MongoDB 监听本地localhost27017端口。此时,启动 MongoDB JavaScript Shell 时也能够省略地址和端口参数。链接成功后就能够操做数据库了。好比查看现有的database:shell

> show dbs;
admin   0.000GB
config  0.000GB
local   0.000GB

安装操做详解

接下来会对安装过程作进一步讲解,基于这部份内容,能够对 MongoDB 的安装和基本配置进行部分自定义。数据库

安装指定组件和版本

在一节内容中,能够看到当 MongoDB 的包安装完成后,能够看到多个组件被安装。这些组件分别是ubuntu

包名 描述
mongodb-org 包含全部组件包的元包,安装此包会包含如下全部组件
mongodb-org-server MongoDB 服务器,主要是 mongod 进程程序和相关资源和脚本
mongodb-org-mongos mongos 进程,用于在 MongoDB 分片集群中将客户端请求分发到各服务节点
mongodb-org-shell MongoDB JavaScript Shell 客户端
mongodb-org-tools 其余 MongoDB 工具, mongoimport, bsondump, mongodump, mongoexport,mongofiles,mongorestore,mongostat,和mongotop

能够根据须要安装指定的组件,好比只安装 MongoDB JavaScript Shell 来访问远程服务:服务器

sudo apt install mongodb-org-shell

系统服务配置

MongoDB 服务安装完成后,会建立系统服务文件 /lib/systemd/system/mongod.service。能够根据须要修改此文件。app

好比,服务文件里包含如下一些配置:ionic

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --config /etc/mongod.conf

UserGroup指定了启动 MongoDB 服务进程所使用的用户mongodb和同名用户组mongodb。这个用户和用户组是在安装 MongoDB 时自动建立的。能够在必要时指定为指望的值。当修改后,要注意同时修改相关目录和文件的权限。ide

ExecStart指定了启动服务进程的命令,能够看到这里显示指定了使用配置文件/etc/mongod.conf。能够修改这条配置项让数据库使用其余配置文件,也能够添加其余启动参数。

若是但愿在同一台服务器上启动多个 MongoDB 服务,能够复制服务文件,并修改后启用。

若是是在启用服务以后对服务文件作了修改,须要重载配置再重启服务:

sudo systemctl daemon-reload
sudo systemctl restart mongod.service

基础配置

本节介绍一些 MongoDB 配置文件中经常使用的配置项。默认状况下,这些配置保存在文件/etc/mongod.conf中。当配置项修改后,须要重启服务才能生效。

指定监听地址和端口

默认状况下,非分片集群下的 MongoDB 监听 localhost 上的 27017端口。在没有显示指定配置文件时,这个是由配置文件中的 net.portnet.bindIp配置顶控制:

# network interfaces
net:
    port: 27017
    bindIp: 127.0.0.1

这时, MongoDB 只接受来自于同一台服务器上的本地链接,因此一般都会须要修改监听的地址。好比但愿监听全部的IPv4地址,就能够将 net.bindIp 项的值由 127.0.0.1 修改成 0.0.0.0。若是须要调整监听的端口,则将 net.port 配置顶的值由 27017 修改成指望值。

修改数据存储

MongoDB 的数据存储目录是由配置文件中的 storage.dbPath 配置项来控制的。默认状况下数据保存在 /var/lib/mongodb 目录下:

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb

能够根据本身的须要修改数据目录。在修改以前要确保目录已经存在,而且权限设置正确。目录的全部者应当为 mongodb:mongodb,或者启动进程的用户有读写权限。

若是数据库以前已经有数据了,须要把以前数据目录下的文件都复制到新目录下,不然 MongoDB 会新建空的数据文件结构。

修改日志配置

默认状况下 MongoDB 日志记录在文件 /var/log/mongodb/mongod.log 中。这个是由 systemLog 相关配置项决定的:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

若是要修改日志文件位置,就根据须要修改 systemLog.path 配置项的值。不过要注意日志文件所在目录的权限。运行 MongoDB 进程的用户须要有日志目录的读写权限。默认状况下使用的用户是 mongodb:mongodb

若是但愿日志文件能够轮转(log rotate),则须要添加配项 systemLog.logRotate:

# where to write logging data.
    systemLog:
      destination: file
      logAppend: true
      logRotate: true
      path: /var/log/mongodb/mongod.log

访问控制

默认配置下,MongoDB 是没有开启访问控制的。此时,用户访问数据库不须要作验证,而且拥有全部的权限。因此在安装完成后,应当马上开启数据库的访问控制。

  1. 链接到本地数据库后,在客户端执行如下命令
    use admin
    db.createUser(
      {
        user: "admin",
        pwd: passwordPrompt(),
        roles: [
          { role: "userAdminAnyDatabase", db: "admin" },
          "readWriteAnyDatabase"
        ]
      }
    )
    此命令用在 admin 数据库下建立一个名为 admin 的帐号。createUser方法参数JSON中的 pwd 字段用来指定帐号的密码。这里指定的是另外一个方法 passwordPrompt。这个方法在执行createUser命令时,会提示并等待用户在客户端输入密码。roles指定用户的角色和权限。这里给 admin 受权的第一个权限是 admin 数据库的管理权限。admin数据库是 MongoDB 用来管理用户的,因此有了这个权限,就能够用来管理数据库的其余帐号了。第二个权限 readWriteAnyDatabase 是对全部数据库的读写权限。
  2. 在Ubuntu终端中关闭 MongoDB 服务:
    sudo systemctl stop mongod.service
  3. 在配置文件将security.authorization配置顶设置为true来开启访问控制:
    security:
      authorization: enabled
  4. 启动 MongoDB 服务来使配置生效:
    sudo systemctl start mongod.service
  5. 使用admin登陆
    mongo -u admin -p
  6. 给应用数据库建立帐号,好比app_db下建立帐号app_admin:
    use app_db
    db.createUser(
      {
        user: "app_admin",
        pwd: passwordPrompt(),
        roles: [ "readWrite" ]
      }
    )

这里建立的帐号是有app_db下的读写权限readWrite的。若是想建立只读帐号,则须要指定权限为read

  1. 使用普通帐号登陆
    mongo --authenticationDatabase app_db -u app_admin -p
    和以前使用admin帐号登陆不一样,这里指定了authenticationDatabase参数值为app_db,由于app_admin是在app_db下建立的帐号。

参考资料

原文出处:https://www.cnblogs.com/mithrilon/p/12056301.html

相关文章
相关标签/搜索