MongoDB在linux-centOS 7下的安装预配置(使用yum方式安装)

步骤一:查看是否存在MongoDB的配置yum源

cd /etc/yum.repos.d/    查看是否存在mongodb-org-3.4.repo文件

步骤二:创建文件并进行编辑

vim /etc/yum.repos.d/mongodb-org-3.4.repo

添加以下内容:

[mongodb-org-3.6]

name=MongoDB Repository

baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/

gpgcheck=1

enabled=1

gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

这里可以修改 gpgcheck=0, 省去gpg验证

步骤三:安装MongoDB

sudo yum install -y mongodb-org

步骤四:修改SELinux

semanage port -a -t mongod_port_t -p tcp 27017

注:修改之后需要在防火墙中开启27017端口

步骤五:修改mongod.config文件(该文件在/etc下)

# where to write logging data.(日志文件配置)
systemLog:
  destination: file(日志输出目的地,可以指定为“ file”或者“syslog”,表述输出到日志文件,如果不指定,则会输出到标准输出中(standard output))
  logAppend: true(如果为true,当mongod/mongos重启后,将在现有日志的尾部继续添加日志。否则,将会备份当前日志文件,然后创建一个新的日志文件;默认为false。)
  path: /var/log/mongodb/mongod.log(日志存放路径)

# Where and how to store data.(数据存放配置)
storage:
  dbPath: /home/mongo/data/db(数据存放目录)
  journal:
    enabled: true(是否开启journal日志持久存储,journal日志用来数据恢复,是mongod最基础的特性,通常用于故障恢复。64位系统默认为true,32位默认为false,建议开启,仅对mongod进程有效)
# engine:
# mmapv1:
# wiredTiger:

# how the process runs
processManagement:
  fork: true # fork and run in background(是否以fork模式运行mongod/mongos进程,默认为false)
  pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile(配合"fork:true"参数,将mongod/mongos进程ID写入指定的文件,如果不指定,将不会创建PID文件)
  timeZoneInfo: /usr/share/zoneinfo

# network interfaces
net:
  port: 27017(mongod/mongos侦听端口,默认为27017;不过因为mongodb有2种典型的架构模式:replica set和sharding,如果开发者在一个节点上部署多个mongod实例,需要注意修改此端口以避免冲突)
  bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces.(mongod/monogs进程绑定的IP,application通过此IP、port建立链接。可以绑定在任意网卡接口上,如果你的mongos/mongod只需要内网访问,可以绑定在内网IP(例如:192.168.1.100),如果需要外网访问,那么则绑定外网IP,如果此值为“0.0.0.0”,则绑定到所有接口即内网、外网IP均可以访问。(不建议)可以绑定都多个ip上,ip地址之间用“,”分割。)

security:
  authorization: enabled(disabled或者enabled,仅对mongod有效;表示是否开启用户访问控制(Access Control),即客户端可以通过用户名和密码认证的方式访问系统的数据,默认为“disabled”,即客户端不需要密码即可访问数据库数据。(限定客户端与mongod、mongos的认证)注:开启之后,每次使用mongo登录mongodDB,都需要做用户认证

步骤六:开启MongoDB服务

此时不能直接使用service mongod start或者systemctl start mongod开启mongod服务,会出现报错:

Job for .....(此时并不能从控制台页面中查看到是什么问题,需要去/var/log/mongodb/mongod.log路径下查看对应的日志,发现日志文件报错如下)

报错1:dbPath下存在mongod.lock文件时,报错:

Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied(不能打开该锁定文件)

报错2:dbPath下不存在mongod.lock文件时,报错:

IllegalOperation: Attempted to create a lock file on a read-only directory: /home/mongo/data/db, terminating(在启动mongod时,若系统提示启动失败,不能在只读文件下创建lock文件)

出现这样的问题是因为“service mongodb start/stop”命令的service的默认权限是mongodb用户,一般不是root用户,操作root权限的文件会出现权限问题;当你使用 “root”账号在 mongod上做一些文章的时候,生成的文件和目录都会是root的权限。

所以,此时,启动mongod,我们要直接在/usr/bin(若该路径已经被添加到环境变量path下,则可在任意位置使用mongod<启动服务>和mongo<启动客户端>)下,使用mongod命令启动服务,命令如下:

mongod --config /etc/mongod.config

启动成功之后会出现如下信息:

步骤七:创建userAdminAnyDatabase用户

当使用上述方式启动MongoDB之后,在任意位置使用mongo命令链接MongoDB,然后执行以下命令:

use admin            -------------------        <切换到admin数据库>

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

-----------------------------  创建角色为userAdminAnyDatabase的用户,userAdminAnyDatabase为MongoDB的管理admin数据库的角色

注:此时会报错,报以下错误

 

引起该错误的原因是:在mongod.config文件中配置了 authorization: enabled,开启了认证,解决方案有两个:

方案一:在mongod.config文件中将authorization设置为disable或者注释掉,使用mongod命令重启MongoDB服务(关闭MongoDB服务需要注意的问题将在下面提到

方案二:使用无认证的方式启动MongoDB服务,不需要修改mongod.config文件,此处采用的是方案二。

nohup mongod --dbpath /home/mongo/data/db &  (后台以无认证的方式启动MongoDB服务)

然后执行命令创建userAdminAnyDatabase用户

 

mongo    ---------------------   启动mongo客户端服务

use admin

 

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

此时可以创建成功,提示successed

步骤八:关闭MongoDB服务

此时,若处于mongo客户端连接MongoDB服务中,直接使用ctrl+c或者exit可退出mongo与MongoDB服务的链接

若没有退出与MongoDB服务的链接,则使用如下命令可管理MongoDB服务:

use admin

db.shutdownServer();

若已经退出了mongo客户端与MongoDB的链接,则使用如下命令关闭MongoDB服务:

mongod  --shutdown  --dbpath /database/mongodb/data/或者mongod --config  /etc/mongod.conf  --shutdown

此时,窗口会提示:killing process with pid: 16098,证明服务已经被关闭

注意:建议在关闭MongoDB服务的时候不要直接kill -9 pid,这样会造成数据损失当时MongoDB崩溃,可以使用kill 命令,给 mongod 进程发送 SIGINT 或 SIGTERM 信号,即 "kill -2 PID," 或者 “kill -15 PID“(尝试过此类方法,并为奏效)

 

步骤九:创建数据库及相关用户

mongod --config /etc/mongod.config启动MongoDB,mongo链接MongoDB服务

切换到admin数据库做认证:

 

use admin
db.auth("myUserAdmin","abc123")

若不做认证,则无法进行之后的操作

返回1,则认证成功

use dppf     ---------------------   切换到dppf数据库

db.createUser(
{
user: "spisp",
pwd: "123456",
roles: [ { role: "dbOwner", db: "spisp" } ]
}
)

---------------------------   创建用户

至此,MongoDB安装配置完成

 

续:将mongodb的启动、关闭、重启添加到service执行

首先添加MongoDB系统服务,命令如下:vim /etc/rc.d/init.d/mongod

粘贴以下内容到mongod文件中,根据需要,配置相应内容

start() {
/usr/bin/mongod --config /etc/mongod.conf
}

stop() {
/usr/bin/mongod --config /etc/mongod.conf --shutdown
}
case "$1" in
start)
start
;;

stop)
stop
;;

restart)
stop
start
;;
*)
echo
$"Usage: $0 {start|stop|restart}"
exit 1
esac

保存之后,为该文件添加可执行权限

chmod +x /etc/rc.d/init.d/mongod

然后就可以使用service进行启动、停止、重启MongoDB服务了

启动:service mongod start

停止:service mongod stop

重启:service mongod restart

 

posted @ 2019-01-30 21:17  programsir  阅读(264)  评论(0编辑  收藏  举报