centos mongodb使用案例
导读:CentOS环境下MongoDB典型使用案例 1. MongoDB基础安装与配置(CentOS 7/8) 在CentOS上安装MongoDB通常有两种方式:YUM包管理器安装(推荐,简单快捷)和源码编译安装(适合定制化需求)。 YUM安装...
CentOS环境下MongoDB典型使用案例
1. MongoDB基础安装与配置(CentOS 7/8)
在CentOS上安装MongoDB通常有两种方式:YUM包管理器安装(推荐,简单快捷)和源码编译安装(适合定制化需求)。
- YUM安装步骤:
首先添加MongoDB官方YUM仓库,创建文件/etc/yum.repos.d/mongodb-org-4.4.repo
,内容如下:
执行[mongodb-org-4.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/7Server/mongodb-org/4.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
sudo yum install -y mongodb-org
安装MongoDB。启动服务并设置开机自启:sudo systemctl start mongod sudo systemctl enable mongod
- 基础配置:
编辑配置文件/etc/mongod.conf
,修改以下关键参数:bindIp: 0.0.0.0
(允许远程访问,生产环境需限制IP);port: 27017
(默认端口,可根据需求调整);security.authorization: enabled
(启用权限控制,生产环境必选)。
修改后重启服务:sudo systemctl restart mongod
。
2. 用户管理与权限控制
MongoDB启用权限控制后,需创建用户并分配角色。以admin
数据库为例(管理员账户):
// 切换到admin数据库
use admin
// 创建管理员用户(拥有dbOwner权限)
db.createUser({
user: "admin",
pwd: "SecurePassword123!",
roles: [{
role: "dbOwner", db: "admin" }
]
}
)
// 验证用户身份
db.auth("admin", "SecurePassword123!") // 返回1表示成功
为普通数据库(如testdb
)创建应用用户:
use testdb
db.createUser({
user: "app_user",
pwd: "AppPass456!",
roles: [{
role: "readWrite", db: "testdb" }
] // 读写权限
}
)
生产环境中,建议为用户分配最小必要权限(如read
、readWrite
),避免过度授权。
3. 数据增删改查(CRUD)操作
以testdb
数据库的students
集合为例,演示常用操作:
- 插入数据:
use testdb // 插入单条文档 db.students.insert({ name: "张三", age: 20, gender: "男", major: "计算机科学" } ) // 插入多条文档 db.students.insertMany([ { name: "李四", age: 21, gender: "女", major: "数学" } , { name: "王五", age: 19, gender: "男", major: "物理" } ])
- 查询数据:
// 查询所有学生 db.students.find() // 条件查询(年龄大于19岁) db.students.find({ age: { $gt: 19 } } ) // 精确匹配(姓名为“张三”) db.students.findOne({ name: "张三" } ) // 排序(按年龄升序) db.students.find().sort({ age: 1 } )
- 更新数据:
// 更新单个字段(将“张三”的年龄改为21) db.students.updateOne({ name: "张三" } , { $set: { age: 21 } } ) // 更新多个字段(同时修改年龄和专业) db.students.updateOne({ name: "李四" } , { $set: { age: 22, major: "统计学" } } ) // 批量更新(将所有年龄小于20的学生年龄加1) db.students.updateMany({ age: { $lt: 20 } } , { $inc: { age: 1 } } )
- 删除数据:
// 删除单个文档(删除“王五”) db.students.deleteOne({ name: "王五" } ) // 删除所有年龄大于21的学生 db.students.deleteMany({ age: { $gt: 21 } } ) // 清空集合(谨慎使用) db.students.remove({ } )
这些操作是MongoDB日常使用的核心,适用于大多数NoSQL场景。
4. 索引优化(提升查询性能)
索引是MongoDB提升查询速度的关键。以下是常见索引操作:
- 创建索引:
// 在“name”字段上创建升序索引(1表示升序,-1表示降序) db.students.createIndex({ name: 1 } ) // 创建复合索引(同时包含“name”和“age”字段) db.students.createIndex({ name: 1, age: -1 } ) // 创建唯一索引(确保“name”字段值唯一) db.students.createIndex({ email: 1 } , { unique: true } )
- 查看索引:
db.students.getIndexes() // 列出集合所有索引 db.students.getIndexKeys() // 查看索引字段
- 删除索引:
db.students.dropIndex("name_1") // 删除指定名称的索引(如“name_1”) db.students.dropIndexes() // 删除所有索引(保留_id索引)
注意:索引会占用存储空间并影响写入性能,需根据查询需求合理创建。
5. 远程访问配置(跨服务器连接)
若需从其他服务器访问CentOS上的MongoDB,需修改配置并开放端口:
- 修改配置文件:
编辑/etc/mongod.conf
,将bindIp
设置为服务器IP或0.0.0.0
(允许所有IP访问,生产环境不推荐):net: bindIp: 192.168.1.100 # 替换为CentOS服务器IP port: 27017
- 开放防火墙端口:
sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent sudo firewall-cmd --reload
- 远程连接测试:
在另一台服务器上使用mongo
命令连接:
连接成功后会进入MongoDB shell,可执行增删改查操作。mongo --host 192.168.1.100 --port 27017 -u app_user -p AppPass456 --authenticationDatabase testdb
6. 备份与恢复(数据安全保障)
定期备份是防止数据丢失的重要措施,MongoDB提供mongodump
(备份)和mongorestore
(恢复)工具:
- 备份整个数据库:
备份文件会保存在mongodump --host 127.0.0.1 --port 27017 --username admin --password SecurePassword123 --authenticationDatabase admin --db testdb --out /backup/mongodb
/backup/mongodb/testdb
目录下。 - 恢复整个数据库:
mongorestore --host 127.0.0.1 --port 27017 --username admin --password SecurePassword123 --authenticationDatabase admin --db testdb /backup/mongodb/testdb
- 备份单个集合:
mongodump --host 127.0.0.1 --port 27017 --username admin --password SecurePassword123 --authenticationDatabase admin --db testdb --collection students --out /backup/mongodb
- 恢复单个集合:
mongorestore --host 127.0.0.1 --port 27017 --username admin --password SecurePassword123 --authenticationDatabase admin --db testdb --collection students /backup/mongodb/testdb/students.bson
注意:备份文件应存储在安全位置(如异地服务器或云存储),避免单点故障。
以上案例覆盖了CentOS环境下MongoDB的核心使用场景,从安装配置到日常运维,满足大多数应用需求。实际使用时,需根据业务场景调整参数(如索引设计、权限分配),确保数据库性能与安全。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos mongodb使用案例
本文地址: https://pptw.com/jishu/720911.html