阿里云服务器部署mongodb
需求背景:笔者最近在准备开始着手开发毕业设计,是跟另一个腾讯校招的同学一起合作开发一个 电商运营的数据分析全栈系统。所以涉及到一个合作共享数据库的这个需求,故使用远程mongodb
数据库。
这篇文章主要会从下面点开始介绍
- 购买阿里云服务器
- 服务器配置node、mongodb等
- mongodb数据库权限管理控制
- koa+typescript连接mongodb数据库
其中最后一点Koa
+Typescript
搭建后台开发环境这个以后会再出一个博文进行详细讲解。
一、购买阿里云服务器
这里我购买的就是学生服务器然后Centos
操作系统
(一)进入控制台
(1)重置实例密码
这一步是为了远程连接服务器的时候进行的一个校验,点击右侧更多-密码/密钥-重置实例密码
即可
(2)远程连接
先说复杂的方法
Windows
系统可以下载像Putty
、XShell
远程连接的工具Mac
玩家就可以直接通过终端 输入1
2// 公网ip
ssh root@ip现在阿里云已经很强大了!强大到可以直接通过阿里云进行远程连接,点击右侧远程连接按钮,就会进入到一个模拟的终端环境。
输入用户名、密码点击确认,就进入到你的远程服务器环境啦!
二、服务器配置node、mongodb等
(一) 安装node
- 首先检测有没有
node
,输入下面命令。一般来说第一次连接服务器。都是没有的…1
2node -v
npm -v
- 既然没有~那我们就上手安装好啦!这里你可能要懂一些
linux
的常见命令~不懂也没关系,临时查一查也是可以的。
输入下面命令来安装node与npm。通过yum
安装即可
1 | yum install -y nodejs |
这里的话yum
是服务器自带的一个前端软件包管理器。虽然通过它安装的node版本较低,但在服务器上够用就好啦。
这个时候再输入
1 | node -v |
因为本人还比较喜欢使用yarn
所以再多一步安装
1 | npm install -g yarn |
(二)正式开始! 部署mongodb
- 安装
mongodb
- 创建
yum
源文件1
2// vim是linux或centos系统下常见命令,这里不做赘述。
vim /etc/yum.repos.d/mongodb-org-3.4.repo - 并且添加以下内容(按
i
进入编辑模式)1
2
3
4
5name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=0
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc esc
退出编辑模式。wq
保存这里的yum
源文件
当然:这里涉及到文件的读与写出甚至文件夹的读与写。强大的阿里云又给我们提供了可视化编辑的功能
点击上方视图-文件树
就可以查看当前系统下的所有文件
- 然后找到
yum.repos.d
文件夹, - 创建
mongodb-org-3.4.repo
文件 - 添加上面同样内容
- 保存~ 就可以起到跟上面两部一样的作用
阿里云真的是太懂小白的心~,表白一波阿里云的产品大神们!!!
- 安装mongodb
1
2// 这里就是读取上面配置的源文件。
yum -y install mongodb-org - 设置开机启动
1
systemctl enable mongod.service
- 配置
mongodb
远程访问
- 编辑
mongod.conf
1
vim /etc/mongod.conf
- 更改以下内容
1
2
3
4
5
6
7
8# network interfaces
net:
port: 27017
# bindIp: 172.0.0.0 # 这里注视掉或者改为0.0.0.0就是允许所有ip访问
# 添加这两行代码是为了访问控制。即后面会讲到的数据库权限问题。
security:
authorization: enabled # 权限认证
注意:这里还是可以用强大的可视化编辑方法~新建、编辑、保存、退出!
重启mongodb
1 | systemctl restart mongod.service |
- 现在就来试一下
mongodb
能不能用了吧学习过1
2// 启动mongo shell
mongomongodb
的人就知道呐~出现下面这样的>
就算安装成功啦
三、mongodb
数据库权限管理控制
其实有了上面两步,就已经实现了数据库共享这个需求。但~共享就有一个很严重的问题。就是安全!安全!安全!
上一步的配置mongod.conf
的security-authorization
开启后就是开启连接权限认证!
这里就涉及到一个mongodb
权限控制的问题。下面我就一一讲解吧~。
按下面顺序输入命令
1 | mongo // 进入 mongo shell |
下面就是很关键的一步!!! 创建用户角色(即创建权限)
1 | db.createUser( { |
mongodb
常见的几种权限(内置角色)
- 数据库用户角色:
read
、readWrite
; - 数据库管理角色:
dbAdmin
、dbOwner
、userAdmin
; - 集群管理角色:
clusterAdmin
、clusterManager
、clusterMonitor
、hostManager
; - 备份恢复角色:
backup
、restore
; - 所有数据库角色:
readAnyDatabase
、readWriteAnyDatabase
、userAdminAnyDatabase
、dbAdminAnyDatabase
(只在admin
数据库可用) - 超级用户角色:
root
一个栗子~
这回做毕业设计。所以应该有一个数据库!
创建一个数据库
1
2
3
4
5// 创建GRADUATE数据库
use GRADUATE
show dbs
// 这时虽然创建了但由于GRADUATE里没有数据。所以不会显示创建集合(即一个数据表)
1
2use GRADUATE
db.createCollection("tests");插入数据
1
db.tests.insert({"name" : "测试一下"})
上面三步~就创建了一个有数据的数据库
权限控制
1
2
3
4
5
6
7
8
9db.createUser( {
user: "graduate",
pwd: "graduate_password",
customData: "graduate读写角色"
roles: [ {
role: "readWrite",
db: "GRADUATE",
} ]
})授权
1
2use GRADUATE
db.auth("graduate","graduate_password");经过5、6两步。就可以完成一次权限控制啦~
验证一下
command+C
退出mongo shell
- 输入命令
1
2
3
4
5
6show dbs // 这个时候很可能会报错, 因为没有权限
// 授权!
use admin
db.auth("admin","password"); // 管理员角色的权限
show dbs // 成功!
四 koa+typescript连接mongodb数据库
(一) 安全组配置。
为了让你可以访问到远程数据库~需要在控制台新增安全组配置。
打开安全组配置
配置规则
配置详情
(二)下面就是关键代码
远程连接地址是下面拼接的~基本公式是
mongodb://${数据库用户名}:${数据库密码}:${数据库远程地址(公网ip:27017)}/${数据库名}
1 | import * as mongoose from 'mongoose'; |
这里先贴上代码。等笔者有时间整理一套完成的KOA
+ MongoDB
+ TypeScript
的基本框架出来。
(三)Rabo 3T
推荐一个本地开发的可视化mongodb
数据库连接工具
- 创建远程连接
- 视图