MongoDB 学习笔记(一) CentOS7 下安装 MongoDB

在和舍友交流之后才发现拿 JSONB 存储历史价格信息的我可能是个天才吧……
回去检查了一下 PostgreSQL 中的对应字段,果然达到了 65535 字节的最大限制,赶紧着手迁移数据。


选 MongoDB 最主要的原因是它的一个集合(与 PostgreSQL 中的表同概念)可以被当作一个队列,无限制的插入 JSON 格式的数据,放下图方便理解:
列表类型
这对存储未知长度的历史价格数据真的很友好,并且根据日期建立索引后,查询的速度也会很快。


话不多说开始安装,官方文档:Install MongoDB Community Edition on Red Hat or CentOS

1、配置 repo 仓库为 Yum 安装提供源
创建 mongodb-org-5.0.repo:

vi /etc/yum.repos.d/mongodb-org-5.0.repo

内容:

[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc

2、使用 Yum 进行安装
执行:

sudo yum install -y mongodb-org

安装完成会输出如下信息:
完成

你也可以使用以下命令验证是否安装成功:

rpm -qa |grep mongodb
rpm -ql mongodb-org-server

输出

3、启动 MongoDB
启动:

systemctl start mongod.service

看下数据库进程是否启动成功了:

ps -ef|grep mongod

4、配置管理员密码
进入数据库中:

# 进入数据库中
mongo

修改 root 用户的密码:

# 切换到 admin 数据库中
> use admin
switched to db admin
> db.createUser({user:"root", pwd:"mypassword", roles:["root"] })
Successfully added user: { "user" : "root", "roles" : [ "root" ] }

编辑 mongodb.conf 使登录需要验证身份:

vi /etc/mongod.conf

修改如下内容:

...
...
# 解除注释
security:
  # 新增这一行
  authorization: "enabled"   # disable or enabled
...
...

重启下数据库:

sudo service mongod restart 

如果你想验证是否已经开启了密码验证,首先 mongo 进入数据库,接着:

# 切换到 admin 数据库
> use admin
switched to db admin
# 新建 test_collection 集合
> db.createCollection("test_collection")
# 因为没有认证所以失败
{
	"ok" : 0,
	"errmsg" : "command create requires authentication",
	"code" : 13,
	"codeName" : "Unauthorized"
}
# 登录
> db.auth("root", "mypassword")
1
> db.createCollection("test_collection")
# 这次创建 test_collection 集合就成功了
{ "ok" : 1 }

关于 MongoDB 详细的权限管理可以参考我的这篇文章:MongoDB 学习笔记(三) MongoDB 权限管理及实践

5、配置远程访问
编辑配置文件:

vi /etc/mongod.conf

默认 bindIp 为 127.0.0.1,即只允许本地连接,修改为 0.0.0.0 即可:

...
...
# 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.
...
...

之后重启数据库:

sudo service mongod restart 

别忘了开发防火墙和云服务器厂商安全组。

远程连接方法:

mongo $mongodb_host:27017/$database -u $username -p $password

本章结束。