Ubuntu20.04平台下使用二进制包部署MongoDB-6.0.4单实例

news/2025/1/15 22:56:23/

文章目录

    • 1.1 准备服务器的基本信息
    • 1.2 操作系统上创建其用户
    • 1.3 部署MongoDB服务端
    • 1.4 部署MongoDB客户端
    • 1.5 部署MongoDB 27017实例
      • 1.5.1 创建相关目录
      • 1.5.2 准备配置文件
      • 1.5.3 准备启停脚本
      • 1.5.4 进行启停测试
      • 1.5.5 加入开机自启动
    • 1.6 创建超级管理员用户
      • 1.6.1 创建本地的超级用户
      • 1.6.2 创建远端的超级用户
    • 1.7 创建web(业务)帐号
      • 1.7.1 创建某业务库
      • 1.7.2 创建web帐户

1.1 准备服务器的基本信息

在这里插入图片描述

1.2 操作系统上创建其用户

创建超级用户admin

#### 用途:相当于root用户,因为root用户我们会禁止远程登录
01:用来充当root用户的角色。
02:它不会用来运行任何的应用。#### 用户的基本要求
01:用户要能够远程登录,要有家目录。
02:用户不能过期、密码得复杂化,密码是否过期是另外一回事。
03:用户的主组为admin,用户的辅组为wheel。
04:用户得被visudo授权为:admin ALL=(ALL:ALL) NOPASSWD: ALL#### 创建用户的命令
chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow
groupadd -g 91 wheel
groupadd -g 1000 admin
useradd admin -u 1000 -g admin -G wheel -m -s /bin/bash
echo "admin:123456\!@#"|chpasswd
echo "admin ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
visudo -c

创建普通用户app

#### 用途:用来运行1024端口以上的应用
01:用来运行1024端口及以上的应用,即ps -ef | grep "服务名" 结果中的第一列的内容得是app。
02:所有服务的启停、开机自启动都用systemctl来管理。
03:这个app用户要能够使用systemctl来启停服务、开机自启动管理。#### 用户的基本要求
01:用户要能够远程登录,要有家目录。
02:用户不能过期、密码得复杂化,密码是否过期是另外一回事。#### 创建普通用户app的命令
sudo chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow
sudo groupadd -g 1001 app
sudo useradd app -u 1001 -g app -m -s /bin/bash
echo "app:Chenliang\!@#" | sudo chpasswd

1.3 部署MongoDB服务端

软件下载地址

https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-6.0.4.tgz

创建相关的目录

sudo mkdir -p /data/soft
sudo ls -ld /data/soft

安装mongodb服务端软件

#### 安装mongodb服务端软件
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-6.0.4.tgz
ls -l mongodb-linux-x86_64-ubuntu2004-6.0.4.tgz
sudo tar xf  mongodb-linux-x86_64-ubuntu2004-6.0.4.tgz  -C /data/soft/
sudo ln -svf /data/soft/mongodb-linux-x86_64-ubuntu2004-6.0.4 /data/soft/mongodb
sudo chown -R app:app /data/soft/
ls -l /data/soft/mongodb/bin# 里面只有mongod mongos install_compass 这三个命令# 没有mongo命令了#### 配置环境变量
ls -ld /data/soft/mongodb/binsudo bash -c "cat >>/etc/profile" <<'EOF'
export PATH=/data/soft/mongodb/bin:$PATH
EOFsource /etc/profile
which mongod mongos

1.4 部署MongoDB客户端

安装mongosh客户端工具,因为6.0版本默认没有mongo命令了,所以这里安装mongosh

#### 软件下载地址,这个得根据自己的操作系统版本,及系统上Openssl的版本
wget https://downloads.mongodb.com/compass/mongodb-mongosh-shared-openssl11_1.8.0_amd64.deb#### 安装
ls -l mongodb-mongosh-shared-openssl11_1.8.0_amd64.deb
sudo dpkg -i mongodb-mongosh-shared-openssl11_1.8.0_amd64.deb
which mongoshsudo ln -svf $(which mongosh)  /data/soft/mongodb/bin/mongosh
sudo ls -l  /data/soft/mongodb/bin/mongosh

1.5 部署MongoDB 27017实例

1.5.1 创建相关目录

sudo mkdir -p /data/apps/mongodb/27017/{data,conf,logs,run,keys,scripts}
sudo tree /data/apps/mongodb/27017

1.5.2 准备配置文件

sudo bash -c "cat >/data/apps/mongodb/27017/conf/mongod.conf" <<'EOF'
## network
net:port: 27017ipv6: falsebindIpAll: falsebindIp: 0.0.0.0maxIncomingConnections: 3000wireObjectCheck: trueunixDomainSocket:enabled: truepathPrefix: /data/apps/mongodb/27017/runfilePermissions: 0700## storage
storage:dbPath: /data/apps/mongodb/27017/datajournal:enabled: trueengine: wiredTigerwiredTiger:engineConfig:cacheSizeGB: 2## log
systemLog:destination: filelogAppend: falsepath:  /data/apps/mongodb/27017/logs/mongod.logquiet: false## process
processManagement:fork: truepidFilePath:  /data/apps/mongodb/27017/run/mongod.pidtimeZoneInfo: /usr/share/zoneinfo/Asia## security
security:authorization: enabledjavascriptEnabled: false
EOF

1.5.3 准备启停脚本

准备启停脚本

sudo bash -c 'cat >/data/apps/mongodb/27017/scripts/mongod.sh' <<'EOF'
#!/bin/bash
#
# Explain: MongoDB start、stop scripts 
#
# Define variables
RETVAL=0
MonPort="27017"
MonConf="/data/apps/mongodb/$MonPort/conf/mongod.conf"
MonCommPath="/data/soft/mongodb/bin"# Define functions
start(){
MonStatusCheck="$(ss -lntup|grep -w "$MonPort"|wc -l)"
if [ "$MonStatusCheck" -eq 0 ];then$MonCommPath/mongod -f $MonConf --fork >/dev/null 2>&1RETVAL=$?if [ $RETVAL -eq 0 ];thenecho "Start mongodb service[$MonPort] success"elseecho "Start mongodb service[$MonPort] fail"fielseecho "mongodb service[$MonPort] is running"
fi
return $RETVAL
}stop(){
MonStatusCheck="$(ss -lntup|grep -w "$MonPort"|wc -l)"
if [ "$MonStatusCheck" -ne 0 ];then$MonCommPath/mongod --shutdown -f $MonConf  >/dev/null 2>&1RETVAL=$?if [ $RETVAL -eq 0 ];thenecho "Start mongodb service[$MonPort] success"elseecho "Start mongodb service[$MonPort] fail"		fielseecho "mongodb service[$MonPort] is not running"
fi
return $RETVAL
}status(){
MonStatusCheck="$(ss -lntup|grep -w "$MonPort"|wc -l)"
if [ "$MonStatusCheck" -ne 0 ];thenecho "mongodb service[$MonPort] is running"elseecho "mongodb service[$MonPort] is not running"
fi
return $RETVAL
}# case call define functiosn
case "$1" in
start)
start
RETVAL=$?
;;
stop)
stop
RETVAL=$?
;;
restart)
stop
sleep 5
start
RETVAL=$?
;;
status)
status
RETVAL=$?
;;
*)
echo "USAGE:$0{start|stop|restart|status}"
exit 1
esac
EOF

给脚本加可执行权限

sudo chmod 700 /data/apps/mongodb/27017/scripts/mongod.sh
ls -l /data/apps/mongodb/27017/scripts/mongod.sh

更改属主/组为app

sudo chown -R app:app /data/apps/mongodb/

将脚本加入systemctl中

#### 编写/etc/systemd/system/mongod27017.service文件
sudo bash -c "cat >/etc/systemd/system/mongod27017.service" <<'EOF'
[Unit]
Description=mongod  instance
After=network.target[Service]
Type=forking
User=app
Group=app
ExecStart=/bin/bash /data/apps/mongodb/27017/scripts/mongod.sh start
ExecStop=/bin/bash /data/apps/mongodb/27017/scripts/mongod.sh stop
LimitNOFILE=65535
Restart=on-failure
RestartSec=10
RestartPreventExitStatus=1
PrivateTmp=false[Install]
WantedBy=multi-user.target
EOF#### 加载
sudo systemctl daemon-reload#### 授权
sudo chown -R app:app /etc/systemd/system/mongod27017.service

让普通用户app在可执行sudo systemctl stop mongod27017.service这样的命令,但我们这里的app用户是不能远程登录的。你就想想app若是可以登录的呢?

#### 进行visudo授权
sudo bash -c "cat >/etc/sudoers.d/mongod27017_systemctl" <<'EOF'
## Cmnd Alias
Cmnd_Alias MONGOD27017_SYSTEMCTL =  /usr/bin/systemctl daemon-reload, \/usr/bin/systemctl start mongod27017.service, \/usr/bin/systemctl stop mongod27017.service, \/usr/bin/systemctl restart mongod27017.service, \/usr/bin/systemctl status mongod27017.service, \/usr/bin/systemctl enable mongod27017.service, \/usr/bin/systemctl disable mongod27017.service, \/usr/bin/systemctl is-enabled mongod27017.service ## auth
app ALL=(ALL:ALL) NOPASSWD:  MONGOD27017_SYSTEMCTL
EOF#### 更改visudo授权时文件的权限,并visudo -c
sudo chmod 0440 /etc/sudoers.d/mongod27017_systemctl
sudo visudo -c

1.5.4 进行启停测试

#### 先看一看
sudo -u app   sudo -l#### 启动mongodb27017实例
sudo -u app   sudo systemctl start mongod27017.service
sudo ps -aux | grep mongod
ss -lntup | grep 27017#### 停止mongodb27017实例
sudo -u app   sudo systemctl stop mongod27017.service
sudo ps -aux | grep mongod
ss -lntup | grep 27017#### 再次启动
sudo -u app   sudo systemctl start mongod27017.service
sudo ps -aux | grep mongod
ss -lntup | grep 27017

1.5.5 加入开机自启动

sudo systemctl enable mongod27017.service
sudo systemctl is-enabled mongod27017.service

1.6 创建超级管理员用户

1.6.1 创建本地的超级用户

我这里创建一个root用户,角色为root,因为角色为root,其库必须得为admin库。且我会开启root用户的身份验证(只允许client地址为127.0.0.1的登录,这样一来这个root用户就是个本地用户,只能在mongodb实例所在服务器上用mongosh 127.0.0.1:27017这样的方式去登录,然后到admin库下去认证。)

// 连接mongodb实例,进入到admin库,我mongodb实例才部署好,哪来的认证
// 连接的时候只能是127.0.0.1,因为我的配置文件中有开启安全认证
mongosh 127.0.0.1:27017
use admin; // 这里创建用户并且同时(这里是必须)授于角色为root,db只能是admin
db.createUser({user:"root",pwd:"root123456",roles: [ { role:"root",db:"admin" }]}
);// 进行认证
db.auth("root","root123456")// 开启其身份验证,其实在创建用户时就可以,但我们这里是才部署好,都没有
// 超级用户。
db.updateUser("root",{authenticationRestrictions:[{ clientSource: ["127.0.0.1"] }]}
);// 查看root用户
db.getUser("root");                      // 看不到身份验证的相关信息
db.system.users.find( {user:"root"} );   // 就可看到身份验证// 退出连接
exit;// 连接,这里使用mongosh 172.31.7.111:27017 来进行连接
// 认证时使用root用户,会报错,因为root用户开启了身份验证的

在这里插入图片描述

// 再用mongosh 127.0.0.1:27017去连接,然后认证时使用root用户
// 是可以成功的

在这里插入图片描述

1.6.2 创建远端的超级用户

这里创建一个远端的超级用户,这个超级用户的名称可以以你公司的名称来命名,所以它并不是一个人类用户。就不对该用户开启身份验证了,这个用户我们就可以结navicat这样的工具来连接mongodb实例了。

// 本地以root用户登录并认证
mongosh 127.0.0.1:27017
use admin;
db.auth("root","root123456");// 创建aliang用户,角色为root,认证库必须为admin(得在admin库下创建用
// 户),库也得为admin。
use admin;
db.createUser({user: "aliang",pwd: "aliang123456",roles: [{ role:"root",db:"admin" }]}
);// 查看用户
use admin;
db.system.users.find( {user:"aliang"} );
db.getUser("aliang");// 进行认证
db.auth("aliang","aliang123456");// 退出登录
exit;

1.7 创建web(业务)帐号

1.7.1 创建某业务库

 以本地管理员用户登录

mongosh 127.0.0.1
use admin;
db.auth("root","root123456");

 创建wyc业务库

// 进入并创建wyc库,并创建test集群
use wyc;       db.createCollection("test");    // 往test集合中插入两条数据
db.test.insertMany( [ {name:"chenliang01",age:"11"},{name:"chenliang02",age:"12"} ] 
);// 查看test集合中的前10条文档(记录)
db.test.find().limit(10);  

1.7.2 创建web帐户

 创建一个名为wyc的用户并进行授于相关角色

// 我是进入到admin库的哈
use admin;                      // 创建用户,设置密码,没有授于角色(后面会授予的)
db.createUser({user:"wyc",pwd:"wyc123456",roles: [] }
); // 查看wyc用户
db.getUser("wyc"); // 对wyc用户授于readWrite角色
db.grantRolesToUser("wyc",[ {role:"readWrite",db:"wyc"} ]
);  // 查看wyc用户
db.getUser("wyc");  

 对wyc这个web帐户进行认证

// 进入到admin库后,认证wyc用户
use admin;                    
db.auth("wyc","wyc123456"); // 查看有哪些库,只能看到wyc库,进入wyc库,查看test集群
show dbs; 
use wyc; 
show tables;
db.test.find().limit(10);// 退出连接
exit;

http://www.ppmy.cn/news/293026.html

相关文章

西门子PLC通过网口无线采集多处分散IO信号

想实现西门子PLC通过网口无线采集多处分散IO信号&#xff0c;实际上就是&#xff0c;在Profinet通讯协议下&#xff0c;通过RJ45口&#xff0c;搭建一个西门子PLC与IO模块之间1主多从的无线以太网通讯网络。我们就需要以下几种设备来搭建无线网络&#xff1a; 1.西门子PLC&…

天锐绿盾报税软件 银行软件 财务软件报错病毒解决

最近安装天锐绿盾的电脑客户端很多税控软件、开票软件报错打不开、提示文件感染病毒或者被修改&#xff0c;这是安装绿盾客户端引起的。 这可以可以在新版的控制台设置过滤&#xff0c;也可以在客户端修改解决。建议大家最好升级新版&#xff0c;新版加密更安全稳定&#xff0…

中小企业使用财务软件有以下好处

自动化 财务软件可以自动化处理复杂的财务任务&#xff0c;如账单管理、财务报告和税务申报。这能够节省时间和减少出错的可能性。 实时数据 财务软件可以提供实时的财务数据&#xff0c;这有助于及时跟踪企业的财务状况和做出决策。 提高准确性 财务软件可以减少手动输入…

计算机自动生成凭证,哪些财务软件能自动生成记账凭证?

如今&#xff0c;各企业的信息化水平逐渐提高&#xff0c;记账凭证的源头经济业务也在逐步实现电子流转&#xff0c;使得计算机替代人工的智能记账成为可能。一方面解决了会计流程与业务流程的分离&#xff0c;另一方面也能使财务人员从日常繁杂的会计核算中摆脱出来 , 更好地关…

python的搜题软件下载_大学搜题用什么软件最好

我们在学习的时候&#xff0c;最重要的就是能够了解到更多的知识&#xff0c;那如果说遇到了问题该怎么办呢&#xff1f;有的时候问老师自己可能没有那么大胆&#xff0c;但是问同学却不一定能够解决&#xff0c;特别是到了大学之后遇到了难题&#xff0c;到底该怎么办呢&#…

t3软件怎么生成报表_t3财务报表怎么生成

类型&#xff1a;滤镜插件大小&#xff1a;30KB语言&#xff1a;中文 评分&#xff1a;10.0 标签&#xff1a; 立即下载 用友的t3财务软件是很多事业单位都会使用的一款软件&#xff0c;那么其中t3财务报表怎么生成呢&#xff0c;其实非常的简单&#xff0c;赶紧来看看以下的步…

新中大财务软件银色快车问题合集汇总 您遇到的问题基本都可以解决 SE

小编维护中&#xff0c;软件常见的问题。有用的大家给个小红心。 一、帐务、报表模块 1、账务初始化完成后&#xff0c;无备份数据&#xff0c;无任何数据库及压缩工具&#xff0c;现在要返回初始化修改数据&#xff0c;怎么办&#xff1f; 答&#xff1a;新建一帐套&#x…

软件工程复习题

原文链接在本人语雀文档&#x1f449;&#xff1a; 2、比较传统的软件工程方法与敏捷过程的特点&#xff08;5分) 敏捷过程的特点&#xff1a; 敏捷开发的优点是轻量级、简单、可快速交付、最大的特点是高度透明、检验和适应&#xff0c;注重开发团队之间以及开发团队与客户的…