欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > CentOS7安装MongoDB

CentOS7安装MongoDB

2025/2/25 9:09:03 来源:https://blog.csdn.net/nalanxiaoxiao2011/article/details/139955070  浏览:    关键词:CentOS7安装MongoDB

文章目录

  • 一、 环境准备
  • 二、安装包下载
  • 三、 软件安装和启动
    • 3.1 将下载好的安装包上传到 Linux 服务器某个目录下,并使用以下命令解压压缩包。
    • 3.2 将解压后的目录移动到 /usr/local 目录下,并改名为 mongodb 。
    • 3.3 进入 mongo 目录,并创建文件夹 data,在 data 文件夹下再创建 db 文件夹(用于存放数据库数据)和 log文件夹(存放 mongo 日志)。然后为其设置可读写权限。
    • 3.4 在 mongodb-7.0 目录下新建配置文件 mongodb.conf(可选,但建议配置),打开文件输入以下内容。
    • 3.5 配置环境变量,使用 sudo vim /etc/profile 命令打开系统文件
    • 3.6 完成以上步骤即可启动 Mongo 服务。
        • 启动报错:
    • 3.7 验证
  • 四、 其他配置
    • 1 开放端口
    • 2 检查服务状态
    • 3.在浏览器中输入网址:http://localhost:27017/ 。如果服务启动成功会看到以下一段话:
    • 4 开机自启动
    • 5 启动重启停止服务
  • 五、用户角色和密码
    • 1 内置角色
    • 2 创建管理员账号
    • 3 验证
    • 4 演示对单个数据库创建用户和密码
    • 5 可视化工具连接
        • 注意,当连接的数据库启动没有设置用户认证时,不用填写用户名和密码。
        • 因为studio3T是要破解的,目前我查到的破解都是延长他的试用期而已,所以我用的也是这个办法

一、 环境准备

MongoDB 系列文章

  • Linux CentOS7 环境下安装 MongoDB
  • Windows 环境下安装 MongoDB

二、安装包下载

官网下载地址:https://www.mongodb.com/try/download/community
在这里插入图片描述
在这里插入图片描述

创建目录

mkdir /usr/local/soft/mongo
cd   /usr/local/soft/mongo

复制下载地址,然后直接在 Linux 服务器上使用 wget 下载。

## 实验,centos7.9 系统,安装mongodb7.x版本,不成功,非法指定,应该是缺少指令集
sudo wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-7.0.11.tgz
## 换成 mongodb4.x 版本
sudo wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.29.tgz

在这里插入图片描述


sudo wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.29.tgz

在这里插入图片描述
在这里插入图片描述

三、 软件安装和启动

3.1 将下载好的安装包上传到 Linux 服务器某个目录下,并使用以下命令解压压缩包。

tar -zxvf mongodb-linux-x86_64-rhel70-4.4.29.tgz

3.2 将解压后的目录移动到 /usr/local 目录下,并改名为 mongodb 。

mv tar -zxvf mongodb-linux-x86_64-rhel70-4.4.29 mongodb-4.0
sudo chown ltkj:ltkj -R /usr/local/soft/mongo

3.3 进入 mongo 目录,并创建文件夹 data,在 data 文件夹下再创建 db 文件夹(用于存放数据库数据)和 log文件夹(存放 mongo 日志)。然后为其设置可读写权限。

# 进入目录
cd /usr/local/soft/mongo/# 创建三个文件夹
sudo mkdir -p /data/db/mongo/
sudo mkdir -p /data/db/mongo/data
sudo mkdir -p /data/db/mongo/log# 设置可读写权限
sudo chmod 755 -R /data/db/mongo/
# sudo chmod 666 -R /data/db/mongo/
sudo chown ltkj:ltkj -R /data/db/mongo/

3.4 在 mongodb-7.0 目录下新建配置文件 mongodb.conf(可选,但建议配置),打开文件输入以下内容。

cd  /usr/local/soft/mongo/mongodb-7.0
mkdir conf 
cd conf 
vim mongodb.conf
# 数据库数据存放目录
dbpath=/data/db/mongo/data
# 日志文件存放目录
logpath=/data/db/mongo/log/mongodb.log
# 使用追加的方式写日志
logappend=true
# 端口
port=27017
# 是否认证
auth=true
# 以守护进程方式在后台运行
fork=true
#每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。
#即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。
journal=true 
storageEngine=wiredTiger  #存储引擎,有mmapv1、wiretiger、mongorocks# 远程连接要指定ip,否则无法连接;0.0.0.0代表不限制ip访问
bind_ip=0.0.0.0

3.5 配置环境变量,使用 sudo vim /etc/profile 命令打开系统文件

按下字母 I 键,开始编辑,
在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容:

export MONGODB_HOME=/usr/local/soft/mongo/mongodb-4.0
export PATH=$PATH:$MONGODB_HOME/bin

保存,最后使用 source /etc/profile 命令重启系统配置。

3.6 完成以上步骤即可启动 Mongo 服务。

# -f 等同于--config
[root@localhost mongodb-4.0]# ./bin/mongod -f /usr/local/soft/mongo/mongodb-4.0/conf/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 12649
ERROR: child process failed, exited with 1
To see additional information in this output, start without the "--fork" option.
[root@localhost mongodb-4.0]# 

在这里插入图片描述

启动报错:

mongodb出现启动失败 child process failed, exited with 1 To see additional information in this output

解决方式
造成这个报错的原因是 “MongoDB” 服务没有正常的关闭,非法关闭的时候,有一个 lock 文件 没有干掉,所以在第二次启动的时候检查到有 lock 文件的存在,就报这个错误了。
解决这个问题的方法,其实也很简单:

  1. 检查创建的mongod.conf文件中两个path指向路径跟创建路径名是否一致。
  2. 查看服务有没有正常的关闭,存在xxx.lock 文件 没有干掉,进入db文件夹中找到进行删除 。
    进入到数据存储路径,将该 “xxx.lock 文件” mongod.lock删除掉就好。

/data/db/mongo/ 是你的mongodb路径

rm -rf /data/db/mongo/mongod.lock 

然后重启:执行命令
在这里插入图片描述

3.7 验证

使用安装目录下 bin 目录的 mongo 客户端命令连接和访问 MongoDB,默认会链接到 test 数据库。

[root@localhost mongodb-4.0]# ./bin/mongo
MongoDB shell version v4.4.29
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b514f571-0852-4794-a8f1-034b5ac652e0") }
MongoDB server version: 4.4.29
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, seehttps://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forumshttps://community.mongodb.com
> db
test
> 

在这里插入图片描述

四、 其他配置

1 开放端口

CentOS 7 版本对防火墙进行了加强,不再使用原来的 iptables,而是启用 firewall 。默认情况下,不开放任何端口。所以如果需要对外开发 MongoDB 服务,那么需要开放 MongoDB 的端口 。

# 开放27017端口
[root@chenpi mongodb]# firewall-cmd --zone=public --add-port=27017/tcp --permanent
success
# 让配置生效
[root@chenpi mongodb]# firewall-cmd --reload
success
# 查看开放的端口,验证是否成功
[root@chenpi mongodb]# firewall-cmd --zone=public --list-ports
6380/tcp 27017/tcp
[root@chenpi mongodb]# 

2 检查服务状态

# 查看 mongodb 进程状态
[root@chenpi mongodb]# ps aux | grep mongo
root       1566  1.6  6.4 1099452 64240 ?       Sl   15:39   0:11 mongod -f /usr/local/mongodb/mongodb.conf
root       1693  0.0  0.0 112812   972 pts/0    R+   15:49   0:00 grep --color=auto mongo# 检查端口是否启动
[root@chenpi mongodb]# netstat -lanp | grep 27017
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      1566/mongod         
tcp        0      0 172.22.17.128:27017     172.22.16.99:7424       ESTABLISHED 1566/mongod         
tcp        0      0 172.22.17.128:27017     172.22.16.99:7425       ESTABLISHED 1566/mongod         
unix  2      [ ACC ]     STREAM     LISTENING     22369    1566/mongod          /tmp/mongodb-27017.sock
[root@chenpi mongodb]# 

如果 netstat 命令没有找到,先进行安装。

yum install -y net-tools

3.在浏览器中输入网址:http://localhost:27017/ 。如果服务启动成功会看到以下一段话:

It looks like you are trying to access MongoDB over HTTP on the native driver port.
在这里插入图片描述

4 开机自启动

使用 vim /usr/lib/systemd/system/mongodb.service 命令新建开机启动配置文件,输入以下内容保存。

[Unit]Description=mongodbAfter=network.target remote-fs.target nss-lookup.target
[Service]Type=forkingExecStart=/usr/local/soft/mongo/mongodb-4.0/bin/mongod -f /usr/local/soft/mongo/mongodb-4.0/conf/mongodb.confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/usr/local/soft/mongo/mongodb-4.0/bin/mongod -f /usr/local/soft/mongo/mongodb-4.0/conf/mongodb.conf --shutdownPrivateTmp=true
[Install]WantedBy=multi-user.target

然后依次执行以下4个命令,使之生效。
在这里插入图片描述

# 启动 mongodb
[root@chenpi mongodb]# systemctl start mongodb.service# 查看服务状态
[root@localhost mongodb-4.0]# systemctl start mongodb.service
[root@localhost mongodb-4.0]# systemctl status mongodb.service
● mongodb.service - mongodbLoaded: loaded (/usr/lib/systemd/system/mongodb.service; disabled; vendor preset: disabled)Active: active (running) since 二 2024-06-25 15:26:19 CST; 3s agoProcess: 15838 ExecStart=/usr/local/soft/mongo/mongodb-4.0/bin/mongod -f /usr/local/soft/mongo/mongodb-4.0/conf/mongodb.conf (code=exited, status=0/SUCCESS)Main PID: 15841 (mongod)CGroup: /system.slice/mongodb.service└─15841 /usr/local/soft/mongo/mongodb-4.0/bin/mongod -f /usr/local/soft/mongo/mongodb-4.0/conf/mongodb.conf6月 25 15:26:18 localhost.localdomain systemd[1]: Starting mongodb...
6月 25 15:26:18 localhost.localdomain mongod[15838]: about to fork child process, waiting until server is ready for connections.
6月 25 15:26:18 localhost.localdomain mongod[15838]: forked process: 15841
6月 25 15:26:19 localhost.localdomain mongod[15838]: child process started successfully, parent exiting
6月 25 15:26:19 localhost.localdomain systemd[1]: Started mongodb.
[root@localhost mongodb-4.0]# # 开机自启动
[root@localhost mongodb-4.0]# systemctl enable mongodb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mongodb.service to /usr/lib/systemd/system/mongodb.service.# 修改 mongodb.service文件时,重新加载文件
[root@localhost mongodb-4.0]# systemctl daemon-reload
[root@localhost mongodb-4.0]# 

5 启动重启停止服务

systemctl start mongodb.service
systemctl restart mongodb.service
systemctl stop mongodb.service

五、用户角色和密码

启动 MongoDB 服务默认是没有账号密码的,即连接上即可进行各种操作。

但是我们在启动配置文件中,指定了 auth=true,即开启了认证,所以链接后需要认证才能执行操作。默认情况下,MongoDB 是没有管理员账户的,所以我们需要在 admin 数据库中使用 db.createUser() 命令添加管理员帐号或其他角色。
————————————————

1 内置角色

  1. 数据库用户角色:read、readWrite
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
  4. 备份恢复角色:backup、restore
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root
  7. 内部角色:__system

2 创建管理员账号

切换到 admin 数据库,使用以下命令创建管理账号,拥有操作所有数据库权限。

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

3 验证

使用 mongo 命令连接上之后,如果不进行 db.auth(“用户名”,“密码”) 进行用户验证的话,是执行不了任务命令的,只有通过认证才可以。注意,每一个用户都需要在创建这个用户的认证库下进行认证。

> use admin
switched to db admin
> db.auth("admin","123456")
1
> show tables
system.users
system.version
> 
————————————————

4 演示对单个数据库创建用户和密码

平常开发中,一般新项目会创建新的数据库,而且创建一个新的数据库用户仅对此数据库进行读写。以下演示创建 chenpi 用户,密码为123456,并设置对 nobody 数据库读写的权限。注意,创建新用户前,先使用 admin 用户登录,因为我们刚才为 admin 用户设置了 userAdminAnyDatabase 权限。# 先使用有创建用户权限的用户登录
> use admin
switched to db admin
> db.auth("admin","123456")
1
# 新用户的认证库
> use nobody
switched to db nobody
# 创建chenpi用户,密码123465,对nobody数据库有读写权限
> db.createUser({user:'chenpi',pwd:'123456',roles:[{role:'readWrite',db:'nobody'}]})
Successfully added user: {"user" : "chenpi","roles" : [{"role" : "readWrite","db" : "nobody"}]
}
> 

5 可视化工具连接

推荐使用可视化工具:Studio 3T For MongoDB,使用不同用户名和密码进行登录的时候,其可操作的数据库范围是不同的(角色设置原因)。

注意,当连接的数据库启动没有设置用户认证时,不用填写用户名和密码。

直接解压缩安装即可

因为studio3T是要破解的,目前我查到的破解都是延长他的试用期而已,所以我用的也是这个办法

操作步骤
一、 自己在桌面上创建批处理文件 并且命名为 : studio3t.bat
在里面输入

@echo off
ECHO 重置Studio 3T的使用日期......
FOR /f "tokens=1,2,* " %%i IN ('reg query "HKEY_CURRENT_USER\Software\JavaSoft\Prefs\3t\mongochef\enterprise" ^| find /V "installation" ^| find /V "HKEY"') DO ECHO yes | reg add "HKEY_CURRENT_USER\Software\JavaSoft\Prefs\3t\mongochef\enterprise" /v %%i /t REG_SZ /d ""
ECHO 重置完成, 按任意键退出......
pause>nul
exit

注意:保存的时候要注意保存为utf-8

二、然后将该文件 studio3t.bat 剪贴到这个路径:

测试连接图片

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词