11月09, 2017

CentOS7安装MongoDB3.6

最近由于要在一个项目中使用MongoDB,就在服务器上安装了MongoDB3.6,记录下全过程 ,官方也有安装说明,想看官方安装过程的请移步:Red Hat上安装MongoDB开源版,我这里把自己的安装步骤分享一下:

1、配置MongoDB3.6的yum源

vi /etc/yum.repos.d/mongodb-org-3.6.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

2、安装MongoDB3.6

sudo yum install -y mongodb-org

3、根据服务器上SELinux的设置来配置MongoDB

MongoDB官方文档上列出了SELinux(可通过修改/etc/selinux/config文件改变SELINUX的值)三种模式下的不同操作,一般情况下服务器都会设置SELINUX为disabled,想知道原因的请自行查找,三种模式的不同操作如下:

①、enforcing模式:

SELINUX=enforcing

如果是enforcing模式,则需要启动MongoDB的对端口的访问,默认端口27017:

semanage port -a -t mongod_port_t -p tcp 27017

②、disabled模式:

SELINUX=disabled

PS.需要注意的是,修改SELINUX为disabled时需要重启服务器,默认为disabled的请看下一步

③、permissive模式:

SELINUX=permissive

PS.需要注意的是,修改SELINUX为permissive时也需要重启服务器,默认为permissive的请看下一步

4、启动MongoDB

启动之前,需要注意以下几个MongoDB常用设置的默认路径:

  • 配置文件:/etc/mongod.conf
  • 数据库文件路径:/var/lib/mongo
  • 日志文件路径:/var/log/mongodb

如果要修改数据库文件或日志文件路径,请修改/etc/mongod.conf中的storage.dbPathsystemLog.path,接下来启动MongoDB:

mongod -f /etc/mongod.conf  --auth

启动结果:

about to fork child process, waiting until server is ready for connections.
forked process: 4433
child process started successfully, parent exiting

5、设置MongoDB开机启动

vi /etc/rc.local

rc.local文件中添加以下内容:

mongod -f /etc/mongod.conf  --auth

6、创建mongod服务

创建mongod文件:

vi /etc/init.d/mongod

文件中新增内容如下:

#!/bin/sh
#
# mongod start/restart/stop mongod
#
# chkconfig: 2345 90 10
# description: start mongod at boot time

start(){
        mongod -f /etc/mongod.conf  --auth
}
stop(){
        mongod -f /etc/mongod.conf  --shutdown
}
restart() {
        stop
        sleep 2
        start
}
case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
restart)
        restart
        ;;
*)
        echo "Usage: $0 {start|restart|stop}"
        exit 1
        ;;
esac

修改文件权限:

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

创建服务完成,即可使用命令

service mongod start/stop/restart

7、创建管理员用户

启动MongoDB后会有两个默认的数据库,admin和local,接下来使用MongoDB的shell创建用户,官方说明请移步: 为MongoDB添加管理员/测试用户

①、连接数据库

/usr/bin/mongo

②、创建root用户

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

创建成功后会有提示:

Successfully added user: { "user" : "root", "roles" : [ "root" ] }

③、退出shell连接

exit

④、测试管理员用户

mongo --port 27017 -u "root" -p "rootpwd" --authenticationDatabase "admin"

登录成功会有如下提示:

MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 3.6.3
Server has startup warnings:
2018-03-01T21:52:08.857+0800 I STORAGE  [initandlisten]
2018-03-01T21:52:08.857+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2018-03-01T21:52:08.857+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2018-03-01T21:52:09.968+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-03-01T21:52:09.968+0800 I CONTROL  [initandlisten]

PS.需要注意的是,这个userAdminAnyDatabase权限只能管理用户和角色,并没有读写权限,如果你想要有读写权限的用户,需要另外添加roles为readWrite的用户,详细的权限说明请移步MongoDB角色详细说明,常用的MongoDB角色及权限说明:

userAdminAnyDatabase #这个角色拥有分配角色和用户的权限,但没有查写的权限 
root #这是超级管理员 
readWrite #有读写权限 
read #有读权限

⑤、创建对"test"库读写权限用户

use test
db.createUser({user:"myTester",pwd:"myTester",roles:["readWrite"]})

⑥、测试"myTester"

mongo --port 27017 -u "myTester" -p "myTester" --authenticationDatabase "test"

⑦、更改用户密码

偶尔可能需要有更改用户密码的操作,可以使用db.updateUser方法更改用户密码:

use test
db.updateUser("myTester",{pwd: "NewPwd"})

以上就是常用的操作MogoDB的方法

8、设置外网访问MongoDB数据库

MongoDB默认设置仅限制本机访问数据库,若要开启外网访问,需要进行如下操作:

①、修改"/etc/mongod.conf"中"bindIp"的值

bindIp: 0.0.0.0

②、重启MongoDB

service mongod restart

③、防火墙开启外网端口访问

firewall-cmd --zone=public --add-port=27017/tcp --permanent

④、重启防火墙

firewall-cmd --reload

此时,服务器的MongoDB就有了外网访问的权限。

9、开启MongoDB的安全模式

由于在第8步开启了外网访问权限,为了安全考虑,我们需要开启MongoDB的安全模式,其实在之前的命令中(开机启动、启动、创建service的启动命令),都加了--auth参数,表示安全模式启动,开启安全模式后使用账号密码登录的用户才有权限操作数据库。

10、删除数据库

①、使用root用户登录MongoDB

mongo --port 27017 -u "root" -p "rootpwd" --authenticationDatabase "admin"

②、切换至要删除的数据库(如数据库名称为“test”)

use test

③、执行删除命令

db.dropDatabase()

④、查看数据库列表

show dbs

这时显示的数据库列表已经不存在名字为“test”的数据库了

⑤、退出

exit

11、卸载MongoDB

①、停止MongoDB

sudo service mongod stop

②、卸载MongoDB包

sudo yum erase $(rpm -qa | grep mongodb-org)

③、删除日志和数据库文件

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo

以上就是整理出来的MongoDB的安装及操作方法

本文链接:https://www.shaobin.wang/post/5.html

Comments