前言
之前对mongodb的部署一窍不通, 跟众小白一样,根据网上前辈教程各种捣腾没完没了;由于眼花缭乱的 教程将 服务器环境搞到一塌糊涂,导致服务器重启后,mongodb 启动后无法连接;特意记录下,自己二次捣腾的全过程,希望也能帮助到有需要的各位,少走弯路 mongodb官网地址:www.mongodb.com/try/downloa…
正文
安装
PS:如果是7.x版本直接按照教程复制粘贴即可,如果不是,则将所有7.0 改为你目标版本如:8.0
- 添加 MongoDB Yum Repository
- 执行以下命令导入 MongoDB 的 GPG 密钥:
sudo rpm --import https://www.mongodb.org/static/pgp/server-7.0.asc
- 创建 MongoDB 的 Yum 源文件:
cd /etc/yum.repos.d
vi mongodb-org-7.0.repo
PS: 如果 mongodb-org-7.0.repo 原来有内容,建议全部清空,将一下内容复制粘贴进去(
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc
:wq 保存并退出编辑
- 使用以下命令安装 MongoDB 7.0.8 ps:根据目标安装版本 填写版本号
sudo yum install -y mongodb-org-7.0.8
- **启动 MongoDB 7.0.8 服务
- 安装完成后,使用以下命令启动 MongoDB 7.0.8 服务并设置开机启动:
sudo systemctl start mongod
sudo systemctl enable mongod
- 验证 MongoDB 7.0.8 安装(成功进入mongodb数据库,安装成功!)
sudo systemctl status mongod
mongosh
设置账号
- 在 MongoDB Shell 中,切换到 admin 数据库并创建管理员账号
use admin
db.createUser({
user: "adminUser",
pwd: "adminPassword",
roles: ["root"]
})
exit();#退出数据库
- 启用身份验证与 开启外网访问
这步很关键!特别是在服务器上,强烈建议要开启,避免遭受无差别的网络攻击或劫持
- 编辑 MongoDB 配置文件
/etc/mongod.conf
,按照以下示例启用身份验证与外网访问
启用身份验证:
找到 security,将 该标签前面的# 去掉,并添加:authorization: enabled
security:
authorization: enabled
允许外网访问:
找到 net,将 该标 bindIp:127.0.0.1 改为:bindIp: 0.0.0.0
net:
port: 27017
bindIp: 0.0.0.0
完整示例:
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /var/lib/mongo
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
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
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
- 保存文件并重启 MongoDB 服务
sudo systemctl restart mongod
添加数据库
- 使用 admin 权限的账号 进入mongodb
mongosh admin -u adminUser -p 'adminPassword'
# 建立/进入 数据库
use database_name
# 在 `database_name` 数据库中插入一个示例文档
db.exampleCollection.insertOne({ key: "value" })
# 退出
exit
- 二次使用 admin 权限的账号 进入mongodb 后, 使用
show dbs
查看数据库列表,如果一切正常,您应该能够在数据库列表中看到database_name
数据库 3.要在 MongoDB 中创建一个集合(collection),您可以使用以下命令
use database_name
// 切换到您要在其中创建集合的数据库
db.createCollection("exampleCollection")
// 创建名为 "exampleCollection" 的集合
如果您想在创建集合的同时指定集合的选项(如存储引擎、验证规则等),可以使用以下语法
db.createCollection("exampleCollection", {
capped: false, // 是否启用固定大小集合
size: 5242880, // 集合的最大尺寸(以字节为单位)
max: 5000 // 集合的最大文档数
})
自此,mongodb,安装,设置用户,建表一条龙 设置完毕 ~
额外的奇怪知识
指定数据库指定用户仅访问
mongosh admin -u adminUser -p 'adminPassword'
#新增用户,并给予指定数据库的权限
db.createUser({
user: "dev",
pwd: "1234567890",
roles: [
{ role: "dbOwner", db: "database_name" }
]
})
# 退出
exit
mongo角色权限
read
:允许用户在指定数据库中执行只读操作,如查找(find)操作。dbOwner
:允许用户在指定数据库中执行所有操作,相当于拥有该数据库的完全控制权限。readWrite
:允许用户在指定数据库中执行读写操作,包括插入、更新和删除文档。enableSharding
:允许用户在指定数据库上启用分片(sharding)功能,用于水平扩展数据库。userAdmin
:允许用户在指定数据库中管理用户,包括创建、修改和删除用户。dbAdmin
:允许用户在指定数据库中执行管理操作,如索引管理、统计信息和备份恢复。
mongo 常用命令
#连接到 MongoDB 数据库:
# 超级管理员
mongosh admin -u adminUser -p 'adminPassword'
# 普通用户
mongosh -u dev -p '1234567890'
# 显示所有数据库:
show dbs
# 切换到特定数据库:
use <database_name>
# 显示当前数据库中的集合:
show collections
# 插入文档到集合中:
db.<collection_name>.insertOne({ key: "value" })
# 查询集合中的所有文档:
db.<collection_name>.find()
# 更新集合中的文档:
db.<collection_name>.updateOne({ key: "value" }, { $set: { key: "new_value" } })
# 删除集合中的文档:
db.<collection_name>.deleteOne({ key: "value" })
# 创建集合:
db.createCollection("exampleCollection")
# 删除集合
db.<collection_name>.drop()
# 显示当前数据库用户
db.getUsers()
# 显示当前数据库角色
# db.getRoles()
# 删除用户
db.dropUser("username")
# 查看用户列表
show users
服务器上 mongo 运行命
# 启动MongoDB服务
systemctl start mongod
# 查看MongoDB服务状态
systemctl status mongod
# 停止MongoDB服务
systemctl stop mongod
# 重启MongoDB服务
systemctl restart mongod
冷知识
在服务器上查看,MongoDB服务状态正常,防火墙也没有启动,但第三方连接 提示超时,如:
Cannot connect to MongoDB.
No suitable servers found: `serverSelectionTimeoutMS` expired: [Failed to connect to target host: ip:27017]
那很可能是云服务器的安全组启动了,并且没有允许 27017端口访问,移步去检查一下你的 服务器管理后台吧!!!不要傻傻盲目,卸载重装,像极了,写这文章的时候的我