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
更多推荐