Linux CentOS7 环境下安装 MongoDB

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: Linux CentOS7 环境下安装 MongoDB

MongoDB 系列文章

1 环境准备


  • 操作系统:Linux CentOS 7
  • 安装包:mongodb-linux-x86_64-rhel70-4.0.27.tgz

2 安装包下载


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

在这里插入图片描述

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

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

在这里插入图片描述

3 软件安装和启动


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

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

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

mv mongodb-linux-x86_64-rhel70-4.0.27 /usr/local/mongodb

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

# 进入目录
cd /usr/local/mongodb/

# 创建三个文件夹
mkdir data data/db data/log

# 设置可读写权限
sudo chmod 666 data/db data/log/

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

# 数据库数据存放目录
dbpath=/usr/local/mongodb/data/db
# 日志文件存放目录
logpath=/usr/local/mongodb/data/log/mongodb.log
# 日志追加方式
logappend=true
# 端口
port=27017
# 是否认证
auth=true
# 以守护进程方式在后台运行
fork=true
# 远程连接要指定ip,否则无法连接;0.0.0.0代表不限制ip访问
bind_ip=0.0.0.0

3.5 配置环境变量,使用 sudo vi /etc/profile 命令打开系统文件,并在末尾加入以下内容后保存,最后使用 source /etc/profile 命令重启系统配置。

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

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

# -f 等同于--config
[root@chenpi mongodb]# mongod -f /usr/local/mongodb/mongodb.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 1566
child process started successfully, parent exiting
[root@chenpi mongodb]# 

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

[root@chenpi mongodb]# mongo
MongoDB shell version v4.0.27
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("938c27a8-49e4-4617-97bb-7e1fd933d6ac") }
MongoDB server version: 4.0.27
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
> db
test
> 

4 其他配置


4.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]# 

4.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

4.3 停止服务

# 通过进程ID杀死
kill -9 PID

# 通过mongod命令关闭mongodb服务
[root@chenpi mongodb]# mongod -f /usr/local/mongodb/mongodb.conf  --shutdown
killing process with pid: 1566
[root@chenpi mongodb]# 

4.4 开机自启动

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

[Unit]
    Description=mongodb
    After=network.target remote-fs.target nss-lookup.target
[Service]
    Type=forking
    ExecStart=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf --shutdown
    PrivateTmp=true
[Install]
    WantedBy=multi-user.target

然后依次执行以下4个命令,使之生效。

# 启动 mongodb
[root@chenpi mongodb]# systemctl start mongodb.service

# 查看服务状态
[root@chenpi mongodb]# systemctl status mongodb.service
● mongodb.service - mongodb
   Loaded: loaded (/usr/lib/systemd/system/mongodb.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-10-10 15:56:30 CST; 5s ago
  Process: 1744 ExecStart=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf (code=exited, status=0/SUCCESS)
 Main PID: 1746 (mongod)
   CGroup: /system.slice/mongodb.service
           └─1746 /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf

Oct 10 15:56:29 chenpi systemd[1]: Starting mongodb...
Oct 10 15:56:29 chenpi mongod[1744]: about to fork child process, waiting until server is ready for connections.
Oct 10 15:56:29 chenpi mongod[1744]: forked process: 1746
Oct 10 15:56:30 chenpi systemd[1]: Started mongodb.
Oct 10 15:56:30 chenpi mongod[1744]: child process started successfully, parent exiting

# 开机自启动
[root@chenpi mongodb]# 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@chenpi mongodb]# systemctl daemon-reload
[root@chenpi mongodb]# 

4.5 启动重启停止服务

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

5 用户角色和密码


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

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

5.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

5.2 创建管理员账号

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

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

5.3 验证

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

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

5.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.5 可视化工具连接

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

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

在这里插入图片描述

在这里插入图片描述

我们使用 chenpi 用户登录,因为我们设置它的角色是只对 nobody 数据库有读写权限,所以连接后只能看到 nobody 数据库。

在这里插入图片描述

当然,如果我们使用 admin 用户登录,注意,admin 用户当时是在 admin 数据库创建的,所以它的认证库是在 admin。

在这里插入图片描述

你会发现 admin 用户可操作的数据库范围和 chenpi 用户是不一样的。

在这里插入图片描述

相关文章
|
1月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
453 69
|
3天前
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
142 2
|
1月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
243 78
|
3天前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
119 16
|
2月前
|
Linux 网络安全 Apache
针对在Centos/Linux安装Apache过程中出现的常见问题集锦
以上每个问题的解决方案应深入分析错误日志、系统消息和各种配置文件,以找到根本原因并加以解决。务必保持系统和Apache软件包更新到最新版本,以修复已知的bugs和安全漏洞。安装和管理Web服务器是一项需要细致关注和不断学习的任务。随着技术的发展,推荐定期查看官方文档和社区论坛,以保持知识的更新。
177 80
|
1月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
139 10
|
1月前
|
存储 Linux
Linux环境下删除大文件后磁盘空间未释放问题诊断流程。
以上诊断流程涉及Linux底层机制与高级管理技能结合之处,并需要管理员根据实际环境灵活调整诊断策略与解决方案。
100 8
|
2月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
295 16
|
2月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
188 10