一、安装mongodb

本文介绍的安装方式是以二进制方式离线安装,相当于windows“绿色”安装版本的概念。

下载mongodb:

# https://www.mongodb.com/download-center?initial=true#community
cd /usr/local
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.3.tgz
tar xvzf mongodb-linux-x86_64-rhel70-4.0.3.tgz
mv mongodb-linux-x86_64-rhel70-4.0.3 /usr/local/mongodb

环境变量配置vi /etc/profile

export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH

运行mongod -v查看mongodb是否安装成功

二、配置mongodb

自建数据库文件夹:

# root用户执行
mkdir -p /data/mongodb # 自定义数据目录
chmod 0755 /data/mongodb
mkdir -p /data/mongodb/log
touch /data/mongodb/log/mongod.log
chmod 0755 /lib/systemd/system/mongod.service

配置文件-mongod.conf

打开mongod.conf配置文件, 通过这个配置文件进行启动.

vim /etc/mongod.conf

配置文件内容:

dbpath=/data/mongodb
logpath=/data/mongodb/log/mongod.log
logappend=true
port=27017
bind_ip=0.0.0.0 # 为了让远端可以访问
fork=true
##auth = true # 先关闭, 创建好用户在启动 # 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
path: /data/mongodb/log/mongod.log # Where and how to store data.
storage:
#dbPath: /var/lib/mongo
dbPath: /data/mongodb
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger: # how the process runs
processManagement:
fork: true # fork and run in background
#pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
pidFilePath: /data/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo # network interfaces
net:
port: 27017
bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. # 为了让远端可以访问 #security: #operationProfiling: #replication: #sharding: ## Enterprise-Only Options #auditLog: #snmp:

通过配置文件启动:

mongod -f /etc/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 2814
child process started successfully, parent exiting

出现successfully表示启动成功了.

mongodb的参数说明(mongod -h):

  • dbpath 数据库路径(数据文件)

  • logpath 日志文件路径

  • master 指定为主机器

  • slave 指定为从机器

  • source 指定主机器的IP地址

  • pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。

  • logappend 日志文件末尾添加

  • port 启用端口号

  • fork 在后台运行

  • only 指定只复制哪一个数据库

  • slavedelay 指从复制检测的时间间隔

  • auth 是否需要验证权限登录(用户名和密码)

注:mongodb配置文件里面的参数很多,定制特定的需求,请参考官方文档

auth默认是关闭的,参考如下文章可以打开:

参数:

systemd服务配置--mongod.service

cd /usr/lib/systemd/system # 或者 cd /lib/systemd/system
vi mongod.service

以下是后来尝试yum install -y mongodb-org方式安装4.0版本时,自动在/lib/systemd/system/mongod.service生成的文件,本次离线安装借鉴来用,因为我的数据都在/data/mongodb目录下,因此,将一些原本的操作注释了:

[Unit]
Description=MongoDB Database Server
After=network.target
Documentation=https://docs.mongodb.org/manual [Service]
User=root
Group=root
Environment="OPTIONS=-f /etc/mongod.conf"
EnvironmentFile=-/etc/sysconfig/mongod
ExecStart=/usr/bin/mongod $OPTIONS
# 注释 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
ExecStartPre=/usr/bin/mkdir -p /data/mongodb
# 注释 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb
ExecStartPre=/usr/bin/chown root:root /data/mongodb
# 注释 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb
ExecStartPre=/usr/bin/chmod 0755 /data/mongodb
PermissionsStartOnly=true
# 注释 PIDFile=/var/run/mongodb/mongod.pid
PIDFile=/data/mongodb/mongod.pid
Type=forking
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings [Install]
WantedBy=multi-user.target

接着执行:systemctl daemon-reload

官网提示,在运行之前,还需要:

  • 防火墙设置,本文直接将防火墙关闭了:
systemctl disable firewalld.service
systemctl stop firewalld.service
  • SELinux设置

Disable SELinux by setting the SELINUX setting to disabled in /etc/selinux/config

SELINUX=disabled

注意点

If you installed manually by downloading the tarballs, you can create the directories using mkdir -p or sudo mkdir -p depending on the user that will run MongoDB. (See your linux man pages for information on mkdir and sudo.)

By default, MongoDB runs using the mongod user account. If you change the user that runs the MongoDB process, you must also modify the permission to the /var/lib/mongo and /var/log/mongodb directories to give this user access to these directories.

默认情况下,MongoDB使用mongod用户帐户运行。如果更改运行MongoDB进程的用户,则还必须修改/var/lib/mongo/var/log/mongodb目录的权限,以授予此用户访问这些目录的权限。本文将数据都放在了/data/mongodb文件夹下,因此,权限也要注意设置正确。

参考这篇文章看到:

三、运行mongod服务

现在就可以使用:

  • systemctl enable mongod 开机自启服务
  • systemctl start mongod启动服务;
  • systemctl status mongod 查看状态
  • systemctl stop mongod 关闭服务

mongod服务停止也可以使用:

mongod --shutdown -f /etc/mongod.conf
  • 杀进程:
ps -aux|grep mongo # 获取mongod进程,例如是8888。
kill -2 8888 # 或者 kill -4 8888
# kill -9 8888该方式不安全,不推荐**
  • admin方式:
use admin
db.shutdownServer()

参考:

四、开机自启动

systemctl eanble mongod

或者:

echo "/usr/local/mongodb/bin/mongod -f /etc/mongod.conf" >> /etc/rc.d/rc.local # 注意,命令需要使用绝对命令

参考:

五、mongo shell

进入 MongoDB后台管理 Shell:

mongo # 前提是已经配置了环境变量
mongo --port 27017 # 进入端口27017的mongod实例

用户设置:

帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth)。

admin数据库创建一个用户:

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

user表示用户名,pwd表示密码,role表示角色,db表示这个用户应用在哪个数据库上。

角色名 备注
Read 允许用户读取指定数据库
readWrite 允许用户读写指定数据库
dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root 只在admin数据库中可用。超级账号,超级权限

验证:

use admin
db # 查看当前所在的数据库
db.auth('root','root')
show users # 查看当前数据库的用户

详细权限配置参考网址:

六、MongoDB常用命令

#查看所有用户
show users
#查看所有数据库
show dbs
#查看所有的collection
show collections
#查看各collection的状态
db.printCollectionStats()
#查看主从复制状态
db.printReplicationInfo()

七、卸载MongoDB

systemctl stop mongod
yum erase $(rpm -qa | grep mongodb-org)
sudo rm -r /data/mongodb # /var/log/mongodb
sudo rm -r /var/lib/mongo

FAQ

Q1:使用uri的方式访问数据库,怎么也无法访问

查看mongo服务是否启动,mongd命令已经启动了,而且mongo命令连接也OK。

查看官方文档,发现默认ip是localhost,所以需要在配置文件中增加bind_ip=0.0.0.0才能访问数据库。

参考:centos搭建mongodb环境这篇文章也提到了bind_ip字段配置要正确,否则远程连接不上。

Q2: Failed to start SYSV: Mongo is a scalable, document-oriented database

主要原因在于mongodb相关文件件的权限问题导致的

Q3: mongodb getaddrinfo enotfound

与host设置有关系

用到的命令

netstat -lanp # 查看监听的端口
telnet [ip] [port] # 查看端口是否OK
mongostat # 监控MongoDB的内存使用情况

参考

CentOS 安装 MongoDB的更多相关文章

  1. centos安装mongodb 4.x及配置用户名密码(官方推荐的方式)

    安装mongodb 先在本地用记事本做一个这样的文件(命名为:mongodb-org-4.0.repo): [mongodb-org-4.0] name=MongoDB Repository base ...

  2. centos安装mongodb 3.2.9

    centos 6.5 x64 1.下载地址:用迅雷下载,直接下载下不动 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2 ...

  3. CentOS安装MongoDB

    1. touch /etc/yum.repos.d/mongodb.repo vi /etc/yum.repos.d/mongodb.repo [mongodb]        name=MongoD ...

  4. CentOS 安装 Mongodb详解 --- 无Linux基础

    先去官方下载离线安装包:https://www.mongodb.com/ ftp连接一下服务器,把离线包上传上去 XShell连接一下: 解压文件(你输一点就可以按tab键,它会自动补全):tar - ...

  5. centos 安装mongodb

    原文引用:http://blog.chinaunix.net/uid-24250828-id-3770298.html 官方网站: http://www.mongodb.org/ MongoDB 安裝 ...

  6. CentOS 安装 Mongodb详解 --- 有Linux基础

    安装包:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.1.tgz 安装过程 安装pstree小工具,以及其使用 关闭 ...

  7. linux centos 安装mongoDB

    1.下载mongoDB 例如下载3.2.19 64位版本 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.19.tgz ...

  8. YUM安装MONGODB发生Error in PREIN scriptlet in rpm package mongodb-enterprise-server-4.0.2-1.el6.x86_64错误

    YUM安装MONGODB发生Error in PREIN scriptlet in rpm package mongodb-enterprise-server-4.0.2-1.el6.x86_64错误 ...

  9. CentOS7 编译安装 Mongodb (实测 笔记 Centos 7.0 + Mongodb 2.6.6)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

随机推荐

  1. Mongodb内嵌数组的完全匹配查询

    样例数据: {      "cNo" : "11",     "Details" : [         {              &q ...

  2. C#中生成的随机数为什么不随机?

    from:https://www.xcode.me/more/net-csharp-generate-random 随机数生成方法可以说是任何编程语言必备的功能,它的重要性不言而言,在C#中我们通常使 ...

  3. 获取数据库连接对象Connection

    2018-11-04  19:50:52 开始写 public Connection getConn() {//返回类型为Connection try { Class.forName("co ...

  4. 使用函数接口和枚举实现配置式编程(Java与Scala实现)

    概述 做报表时,有时需要根据不同的业务生成不同的报表.这样,需要能够动态地配置列字段,并根据列字段来输出对应的报表.使用函数接口结合枚举可以比较优雅地实现配置式编程. 问题描述如下: 假设有对象 St ...

  5. C# foreach 中获取索引index的方法[转]

    在C# 开发中往往使用foreach 循环语句 来代替for循环语句.foreach 比 for 更加简洁高效.           foreach :                 foreach ...

  6. Collections集合工具类的方法

    addAll & shuffle: 返回类型为boolean类型,执行完操作不接收也行: 其中,静态方法,与对象无关,类名点方法名直接调用: 点点点为可变参数,随便填写几个参数都可以: sor ...

  7. 特定条件下批量解压文件改变编码,顺便修改.so.0找不到等一些小问题

    直接结论: 1.linux解压文件乱码: unzip -O GBK *.zip 2.linux改变文件内容编码: 安装enca,下载地址:https://github.com/nijel/enca/i ...

  8. springboot用@Autowired和@PostConstruct注解把config配置读取到bean变成静态方法

    springboot用@Autowired和@PostConstruct注解把config配置读取到bean变成静态方法 @SpringBootApplication public class Sen ...

  9. centos 6.5 防火墙开放指定端口

    清除防火墙规则:iptables  -F 关闭防火墙 /etc/init.d/iptables stop 关闭防火墙开机自启:chkconfig iptables off 查看iptables 是否开 ...

  10. eHR自动同步获取LDAP中的邮箱地址

    背景:公司里有eHR系统,有网域,IBM Lotus Notes邮件系统,新人入职会在eHR系统里提前建好档案,网域帐号.邮箱帐号均会在入职前提前建好,因为邮箱帐号是晚于eHR建档的,因此在eHR建档 ...