Mongodb配置

下载地址:https://www.mongodb.org/dl/linux或官网https://www.mongodb.com/try/download/community

本次版本4.2.15

1.创建mongodb安装路径,上传tar包到/usr/local/source

mkdir /usr/local/mongodb

mkdir /usr/local/source

2.解压redis的tar包

tar -xvf /usr/local/source/mongodb-linux-x86_64-rhel70-4.2.15.tgz -C /usr/local/mongodb/

3.重命名

cd /usr/local/mongodb

mv mongodb-linux-x86_64-rhel70-4.2.15/ mongodbserver

4.创建数据库、日志、配置文件三个文件夹

mkdir /usr/local/mongodb/mongodbserver/{data,log,etc}

5.创建配置文件mongodb.conf

vi /usr/local/mongodb/mongodbserver/etc/mongodb.conf

dbpath=/usr/local/mongodb/mongodbserver/data
logpath=/usr/local/mongodb/mongodbserver/log/mongodb.log
port=27017
fork=true
journal=false
storageEngine=mmapv1

6.启动mongodb

6.1 mongodb安装好后第一次进入不需密码,也没有任何用户,通过shell命令可以直接进入,cd到/usr/local/mongodb/mongodbserver/bin/下,执行./mongodb即可:

报错了:

./mongod --config /usr/local/mongodb/mongodbserver/etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 9240
ERROR: child process failed, exited with error number 100
To see additional information in this output, start without the "--fork" option.

日志显示:

 exception in initAndListen: Location18656: Cannot start server with an unknown storage engine: mmapv1, terminating
 

原因:

从MongoDB3.2 版本开始,MongoDB默认的存储引擎就已经是WiredTiger,配置文件里面配置的data目录/usr/local/mongo/data是WiredTiger引擎的数据。当引擎改成mmapv1,data目录与WiredTiger引擎还指向同一个目录,就会报“ERROR: child process failed, exited with error number 100”的错。
因为WiredTiger引擎创建的数据目录无法用mmapv1引擎去打开。
所以将配置文件的“storageEngine=mmapv”注释掉,服务就正常启动了。

./mongod --config /usr/local/mongodb/mongodbserver/etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 9380
child process started successfully, parent exiting

6.2 添加管理用户(mongoDB 没有无敌用户root,只有能管理用户的用户 userAdminAnyDatabase)

利用mongo命令连接mongoDB服务器端:

./mongo
MongoDB shell version v4.2.15
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("103d8da2-f148-43b5-9ee4-a5fc24d4e2a7") }
MongoDB server version: 4.2.15
Welcome to the MongoDB shell.
>

键入以下命令:

> use admin
switched to db admin
> db.createUser({user:"pfnieadmin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]});
Successfully added user: {
        "user" : "pfnieadmin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}

查看用户:

> show users;
{
        "_id" : "admin.pfnieadmin",
        "userId" : UUID("1f5e069b-34a3-4cda-b050-823e65e39b66"),
        "user" : "pfnieadmin",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}

6.3 添加完管理用户后,关闭MongoDB,并使用权限方式再次开启MongoDB,这里注意不要使用kill直接去杀掉mongodb进程,(如果这样做了,请去data/db目录下删除mongo.lock文件),可以使用db.shutdownServer()关闭.

在配置文件中添加:auth=true,然后启动

 ./mongo
MongoDB shell version v4.2.15
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b25697ac-9a0a-4c19-a4ce-9080dab365a7") }
MongoDB server version: 4.2.15

6.4 进入mongo shell,使用admin数据库并进行验证,如果不验证是做不了任何操作的

[root@centos7-docker bin]# ./mongo
MongoDB shell version v4.2.15
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b8e6ae85-8005-4c8b-a035-7fc03c4372c9") }
MongoDB server version: 4.2.15
> use admin
switched to db admin
> db.auth("pfnieadmin","123456");
1  #返回1表示成功

7.将mongodb路径添加到系统路径中,方便执行mongod命令

7.1 在/etc/profile文件中,添加

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

然后执行source /etc/profile立即生效

8.设置软连接到/usr/bin下,方便随处执行mongo命令

ln -s /usr/local/mongodb/mongodbserver/bin/mongo /usr/bin/mongo

9.测试任意路径下,执行mongo命令,连接mongod服务

[root@centos7-docker ~]# pwd
/root
[root@centos7-docker ~]#
[root@centos7-docker ~]# mongo
MongoDB shell version v4.2.15
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("7cd6071c-3023-4394-aa09-331930238ec8") }
MongoDB server version: 4.2.15
>

10.将mongodb设置为系统服务并且设置开机自启

vi /etc/rc.d/init.d/mongod

start() {  
/usr/local/mongodb/mongodbserver/bin/mongod  --config /usr/local/mongodb/mongodbserver/etc/mongodb.conf 
}  
  
stop() {  
/usr/local/mongodb/mongodbserver/bin/mongod --config /usr/local/mongodb/mongodbserver/etc/mongodb.conf --shutdown  
}  
case "$1" in  
  start)  
 		start;;
  stop)  
 		stop;; 
  restart)  
 		stop  
 		start;;  
  *)  
 		echo  
		$"Usage: $0 {start|stop|restart}"  
 		exit 1  
esac

测试:

[root@centos7-docker ~]# chmod +x /etc/rc.d/init.d/mongod
[root@centos7-docker ~]# service mongod stop
2021-08-13T04:53:42.435-0400 I  CONTROL  [main] log file "/usr/local/mongodb/mongodbserver/log/mongodb.log" exists; moved to "/usr/local/mongodb/mongodbserver/log/mongodb.log.2021-08-13T08-53-42".
killing process with pid: 9532
[root@centos7-docker ~]# service mongod start
about to fork child process, waiting until server is ready for connections.
forked process: 9673
child process started successfully, parent exiting

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐