推荐的 MongoDB 安装文档
简介:
MongoDB 是一个由 C++ 语言编写的基于分布式文件存储的数据库,是目前最像关系型数据库的非关系型数据库。
最近写爬虫, 思来想去觉得还是用 MongoDB 比较方便。
一、安装
# 官方文档:https://docs.mongodb.com/manual/administration/install-community/
1、添加 YUM 源
shell > vim /etc/yum.repos.d/mongodb-org-3.6.repo [mongodb-org-3.6] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
2、直接安装就好了
shell > yum -y install mongodb-org or shell > yum -y install mongodb-org-3.6.4 mongodb-org-server-3.6.4 mongodb-org-shell-3.6.4 mongodb-org-mongos-3.6.4 mongodb-org-tools-3.6.4
# 这里遇到个小问题, 记录一下
# https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/repodata/repomd.xml: [Errno 14] problem making ssl connection # Cannot retrieve repository metadata (repomd.xml) for repository: mongodb-org-3.6. Please verify its path and try again
# yum 报错, 网上说把该 .repo 的 enabled 设为 0, 然后执行 yum -y install ca-certificates, 之后再设为 1, 就可以安装了
# 我这里试了没成功, 后来把 .repo 中的 https 改为 http 就可以了
二、配置
shell > grep -vP '^#|^$' /etc/mongod.conf systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log storage: dbPath: /data/mongo_data journal: enabled: true processManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile timeZoneInfo: /usr/share/zoneinfo net: port: 27007 bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces. # 修改了 dbPath、port、bindIp shell > mkdir /data/mongo_data && chown -R mongod.mongod /data/mongo_data
# 数据目录不创建, 无法启动
三、启动
shell > /etc/init.d/mongod start shell > chkconfig --level 35 mongod on
四、客户端连接
shell > mongo --port 27007
# 这里会看到一些警告信息, 照着改一改就好了
shell > echo never > /sys/kernel/mm/transparent_hugepage/defrag shell > echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 关闭透明大页, 记得加入 /etc/rc.local
shell > vim /etc/security/limits.conf * - nproc 64000 * - nofile 64000
# 进程数、文件描述符, ulimit -u 64000、ulimit -n 64000 (好像还不行...)
# 官方文档:https://docs.mongodb.com/manual/reference/ulimit/#recommended-settings
五、安全
# 认证类型:https://docs.mongodb.com/manual/security/
# 配置管理:https://docs.mongodb.com/manual/reference/configuration-options/
(我)选择(的是)基于角色的访问控制
# 相关文档:https://docs.mongodb.com/manual/core/authorization/
1、创建用户、分配角色
# 相关文档:https://docs.mongodb.com/manual/reference/method/
# 默认角色:https://docs.mongodb.com/manual/core/security-built-in-roles/
shell > db.createUser({"user": "root", "pwd": "73osZMb", "roles": [{"role": "root", "db": "admin"}]}) Successfully added user: { "user" : "root", "roles" : [ { "role" : "root", "db" : "admin" } ] }
# 这样就创建一个用户为 root、密码、角色为 root (超级用户)、授权 db 为 admin。
# 关于系统有哪些角色、每种角色的功能, 还需参考上面提供的官方文档
2、开启授权
shell > vim /etc/mongod.conf
security:
authorization: enabled
# 开启授权, /etc/init.d/mongod restart
3、验证
shell > mongo --port 27007 MongoDB shell version v3.6.4 connecting to: mongodb://127.0.0.1:27007/ MongoDB server version: 3.6.4 > show dbs 2018-05-11T15:21:35.653+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0, $db: \"admin\" }", "code" : 13, "codeName" : "Unauthorized" } : _getErrorWithCode@src/mongo/shell/utils.js:25:13 Mongo.prototype.getDBs@src/mongo/shell/mongo.js:65:1 shellHelper.show@src/mongo/shell/utils.js:820:19 shellHelper@src/mongo/shell/utils.js:710:15 @(shellhelp2):1:1 # 提示认证失败 > use admin switched to db admin > db.auth("root", "73osZMb") 1 > show dbs admin 0.000GB config 0.000GB local 0.000GB # 尝试 root 角色权限 > use spider > db.sp_douban.insertOne({"id": 1, "name": "警察故事"}) { "acknowledged" : true, "insertedId" : ObjectId("5af5450510d201ef1d48d3a4") } > db.sp_douban.findOne() { "_id" : ObjectId("5af5450510d201ef1d48d3a4"), "id" : 1, "name" : "警察故事" } > db.sp_douban.deleteOne({"id": 1}) { "acknowledged" : true, "deletedCount" : 1 } > db.sp_douban.find()
# 可以开到该用户可以创建数据库、创建表、插入、查询、删除
# 好, 先这样, 搞爬虫去!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用