这里安装的是Mongo7.0版本
步骤 1: 导入 MongoDB 公共 GPG 密钥
打开终端并运行以下命令以导入 MongoDB 的 GPG 密钥:
sudo rpm --import https://www.mongodb.org/static/pgp/server-7.0.asc
接下来,创建一个新的 .repo 文件来配置 MongoDB 源。使用 vi 或其他文本编辑器:
sudo vi /etc/yum.repos.d/mongodb-org-7.0.repo
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc
更新 YUM 包索引,并安装 MongoDB:
sudo yum update
sudo yum install -y mongodb-org
安装完成后,启动 MongoDB 服务,并设置其为开机自启:
sudo systemctl start mongod
sudo systemctl enable mongod
可以通过检查服务状态来确认 MongoDB 是否正在运行:
sudo systemctl status mongod
如果需要远程访问 MongoDB,需要在防火墙中允许相应的端口(默认端口为 27017):
sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp
sudo firewall-cmd --reload
可以通过 MongoDB Shell 连接到数据库:
mongosh
执行mongosh进入mongodb命令行
更改相关的账号和密码配置
db.createUser({
user: "<new_username>",
pwd: "<new_password>",
roles: [
{ role: "readWriteAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "userAdminAnyDatabase", db: "admin" }
]
})
# 响应{ ok: 1 }则创建正常
这里也可更改为非常规端口,更改security增加验证,不然就会免密开放到公网
net:
port: 27017
bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
security:
authorization: enabled
docker ps查看本机mongodb的容器ID ,例如图例
docker exec -it 83f3ebcd7151 mongodump -u admin -p admin --authenticationDatabase admin --db arl --out .docker exec -it 83f3ebcd7151 mongodump -u admin -p admin --authenticationDatabase admin --db arl --out docker exec -it 83f3ebcd7151 mongodump -u admin -p admin --authenticationDatabase admin --db arl --out.
docker exec -it 83f3ebcd7151 bash
# 83f3ebcd7151替换为自己的容器ID
docker cp 83f3ebcd7151:/arl.
ki9mu:/opt
解压前面压缩的内容
mongorestore --db arl arl
2024-09-10T09:36:49.618+0800 error connecting to host: failed to connect to mongodb://localhost/: server selection error: server selection timeout, current topology: { Type: Single, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: dial tcp [::1]:27017: connect: connection refused }, ] }
mongorestore --host localhost --port 27017 --db arl -u myuser -p mypassword --authenticationDatabase admin arl
等待进度条加载完成即迁移成功
一、删除历史容器
删除历史的容器,如果是docker安装不用担心数据问题,不管是原版还是ki9mu的plus版都一样,因为使用了数据卷,不删除数据卷随时可恢复。
获取镜像,镜像可关注公众号回复【plus】获取!
# 下载后存在2个文件,一个.tar.bz2的文件,一个tar文件
## 为啥用bz2文件再压缩一道,因为太大了
bzip -d xxx.tar.bz2
docker load -i xxx.tar
调整config-docker.yaml文件
MONGO:
URI : 'mongodb://admin:admin@<IP地址>:27017/'
DB : 'arl'
四、启动相关容器
docker-compose up -d
# 即可
如果出现容器重启或者容器异常问题,可查看日志相关信息
docker logs <对应容器的ID>
账号密码输入正确,使用
docker exec -ti arl_mongodb mongo -u admin -p admin
use arl
db.user.drop()
db.user.insert({ username: 'admin', password: hex_md5('arlsalt!@#'+'admin123') })
BUT如果还登不上,作者本人就遇到了这个错误,这是由于认证Mongo数据库特性导致的(巨坑)
在第二步中,更改了config-docker.yaml的DB为其他数据库例如admin的时候会出现这个错误,代码位于/code/app/utils/user.py处
a = conn db('user').find one(query)
print(a)
# 输出为None
a = conn db('user','arl').find one(query)
print(a)
# 输出为正常
use arl // 切换到 arl 数据库
db.createUser({
user: "yourUsername", // 替换为您想要的用户名
pwd: "yourPassword", // 替换为您想要的密码
roles: [{ role: "dbOwner", db: "arl" }] // 赋予 dbOwner 权限
});
docker-compose down
docker-compose up -d
原文始发于微信公众号(OneTS安全团队):ARL-plus分布式搭建手册
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论