Mongodb配置

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河 静

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值