centos 7 下 ----》mongodb,安装,设置用户,建表一条龙

61 阅读1分钟

前言

之前对mongodb的部署一窍不通, 跟众小白一样,根据网上前辈教程各种捣腾没完没了;由于眼花缭乱的 教程将 服务器环境搞到一塌糊涂,导致服务器重启后,mongodb 启动后无法连接;特意记录下,自己二次捣腾的全过程,希望也能帮助到有需要的各位,少走弯路 mongodb官网地址:www.mongodb.com/try/downloa…

正文

安装

PS:如果是7.x版本直接按照教程复制粘贴即可,如果不是,则将所有7.0 改为你目标版本如:8.0

  1. 添加 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 保存并退出编辑

  1. 使用以下命令安装 MongoDB 7.0.8 ps:根据目标安装版本 填写版本号
sudo yum install -y mongodb-org-7.0.8
  1. **启动 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

设置账号

  1. 在 MongoDB Shell 中,切换到 admin 数据库并创建管理员账号
use admin
db.createUser({
  user: "adminUser",
  pwd: "adminPassword",
  roles: ["root"]
})
exit();#退出数据库
  1. 启用身份验证与 开启外网访问

这步很关键!特别是在服务器上,强烈建议要开启,避免遭受无差别的网络攻击或劫持

  • 编辑 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

添加数据库

  1. 使用 admin 权限的账号 进入mongodb
mongosh admin -u adminUser -p 'adminPassword'

# 建立/进入 数据库
use database_name

# 在 `database_name` 数据库中插入一个示例文档
db.exampleCollection.insertOne({ key: "value" })

# 退出
exit

  1. 二次使用 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角色权限

  1. read:允许用户在指定数据库中执行只读操作,如查找(find)操作。
  2. dbOwner:允许用户在指定数据库中执行所有操作,相当于拥有该数据库的完全控制权限。
  3. readWrite:允许用户在指定数据库中执行读写操作,包括插入、更新和删除文档。
  4. enableSharding:允许用户在指定数据库上启用分片(sharding)功能,用于水平扩展数据库。
  5. userAdmin:允许用户在指定数据库中管理用户,包括创建、修改和删除用户。
  6. 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端口访问,移步去检查一下你的 服务器管理后台吧!!!不要傻傻盲目,卸载重装,像极了,写这文章的时候的我