简介:

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=
enabled=
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. mongodb-org-server-3.6. mongodb-org-shell-3.6. mongodb-org-mongos-3.6. mongodb-org-tools-3.6.

# 这里遇到个小问题, 记录一下

# 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:
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 mongod on

四、客户端连接

shell > mongo --port 

# 这里会看到一些警告信息, 照着改一改就好了

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
* - nofile

# 进程数、文件描述符, 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
MongoDB shell version v3.6.4
connecting to: mongodb://127.0.0.1:27007/
MongoDB server version: 3.6.
> show dbs
--11T15::35.653+ E QUERY [thread1] Error: listDatabases failed:{
"ok" : ,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0, $db: \"admin\" }",
"code" : ,
"codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js::
Mongo.prototype.getDBs@src/mongo/shell/mongo.js::
shellHelper.show@src/mongo/shell/utils.js::
shellHelper@src/mongo/shell/utils.js::
@(shellhelp2):: # 提示认证失败 > use admin
switched to db admin
> db.auth("root", "73osZMb") > show dbs
admin .000GB
config .000GB
local .000GB # 尝试 root 角色权限 > use spider
> db.sp_douban.insertOne({"id": , "name": "警察故事"})
{
"acknowledged" : true,
"insertedId" : ObjectId("5af5450510d201ef1d48d3a4")
}
> db.sp_douban.findOne()
{ "_id" : ObjectId("5af5450510d201ef1d48d3a4"), "id" : , "name" : "警察故事" }
> db.sp_douban.deleteOne({"id": })
{ "acknowledged" : true, "deletedCount" : }
> db.sp_douban.find()

# 可以开到该用户可以创建数据库、创建表、插入、查询、删除

# 好, 先这样, 搞爬虫去!

推荐的 MongoDB 安装文档的更多相关文章

  1. Oracle 11g 单实例安装文档

    这里介绍在Red Hat Enterprise Linux Server release 5.7 (Tikanga)下安装ORACLE 11.2.0.1.0的过程,本文仅仅是为了写这样安装指导文档而整 ...

  2. 推荐一套.NET文档处理组件Spire.Office

    原文:推荐一套.NET文档处理组件Spire.Office 以前的项目中用到一点Word简单处理的功能(文字替换和转PDF格式),当时使用的是一套COM组件,必须在服务器上安装office环境.最近考 ...

  3. Oracle 12c RAC 安装文档

    参考文档: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html https://docs. ...

  4. Greenplum/Deepgreen(集群/分布式)安装文档

    Deepgreen分布式安装文档 环境准备 1.安装VMware虚拟机软件,然后在VMware安装三台Linux虚拟机(使用centos7版本) 2.使用的虚拟机如下: 192.168.136.155 ...

  5. 环境安装文档(for Ubuntu)

    这个文档的目标是:各位小伙伴通过这个文档,可以在一台全新的 Ubuntu 电脑上搭建平常开发使用的环境,主要包含 Node.js, git 和 编辑器部分. 这是针对 Ubuntu 系统的安装文档,W ...

  6. Mysql5.7.20安装文档

    Mysql5.7.20安装文档 一.Linxu下数据库的恢复和备份 当我们MySQL数据库保存重要数据的时候,备份工作极为重要.本文介绍如何使用mysqldump备份和恢复数据,使用该方法,可以将数据 ...

  7. airflow2.0.2分布式安装文档

    需要安装的组件 组件 功能 Airflow Webserver 查询元数据以监控和执行DAGs的web界面. Airflow Scheduler 它检查元数据数据库中的DAG和任务的状态,在必要时创建 ...

  8. ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档

    ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档 2015-10-21 12:51 525人阅读 评论(0) 收藏 举报  分类: Oracle RA ...

  9. linkedin开源的kafka-monitor安装文档

    linkedin开源的kafka-monitor安装文档 linkedin 开源的kafka-monitor的安装使用可以参考官方的readme:流程介绍的已经比较清楚,但是还是有一些地方需要修正.让 ...

随机推荐

  1. 【RAC】使用一条“ps”命令获取Linux环境下全部RAC集群进程信息

    如何仅使用一条ps命令便能获取到所有与RAC集群进程相关的信息.  从所使用的命令角度上看很简单,仅需使用ps命令结合grep命令便能实现.问题关键是需要确定检索哪些关键字. 1.与RAC集群有关的进 ...

  2. 查询语句中 select from where group by having order by 的执行顺序

    查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by 其中 select 和 from 是必须的,其他关 ...

  3. hihocoder 1513 小Hi的烦恼——bitset

    题目:http://hihocoder.com/problemset/problem/1513 自带的题解写得很好…… #include<cstdio> #include<cstri ...

  4. PHP时间处理

    1.介绍UNIX时间戳 格林威治时间 2.在PHP类中获取日期和时间 time(); getdate()输出数组 3.日期和时间的格式化 date("H-m-d H:i:s",ti ...

  5. 浏览器同源策略,跨域请求jsonp

    浏览器的同源策略 浏览器安全的基石是"同源政策"(same-origin policy) 含义: 1995年,同源政策由 Netscape 公司引入浏览器.目前,所有浏览器都实行这 ...

  6. ASP.NET WEB SERVICE 创建、部署与使用

    PS: 开发工具 VS2010, 所有工程都为Debug状态,本人刚接触 Web Service,此文为菜鸟入门用例,高手勿笑! 转载请注明出处 :http://www.cnblogs.com/yyc ...

  7. 关于IOS给我的启发

    用了将近一年半的iOS,从4到4S,iOS5到iOS6.这里谈谈自己对iOS的一些看法,以及这款移动操作系统给我的启发.我知道这个帖子发出来可能有点“危险”.我从不发水贴,这些积分都是大家给的,不是灌 ...

  8. vim应用:终极解决windows系统gvim/vim的各种乱码(文件,菜单,提示信息)!

    这个方法解决了我的windows下 gvim的中文乱码问题(跟大家分享一下). 此方法引用   http://www.douban.com/note/145491549/ 查看文件的编码::echo ...

  9. 【比特币】SPV是如何工作的

    SPV是如何工作的 SPV, Bloom 过滤器和检查点 这是一篇技术文章,获取比特币的工作知识. 一个完整的节点,比如比特币核心,知道以下几点: 每一个当前正在围绕网络广播事务处理 每一个曾经被送到 ...

  10. 术语-软件-软件开发:SDK(软件开发工具包)

    ylbtech-术语-软件-软件开发:SDK(软件开发工具包) 软件开发工具包(缩写:SDK.外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件包.软件框架 ...