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