本文记载一次在阿里云服务器装载Mongodb并远程连接成功使用的过程记录。

基本安装环境:本次安装环境:CentOS7、Mongodb版本为4.2.10

一、安装

通过Mongodb官网,安装Mongodb社区版本,选择自己需要安装的版本以及依赖的环境。如下图:

mongodb

  1. 在服务器打开终端,应用centos中网络下载的方式下载Mongodb的安装包。

首先,进入服务器端的usr/local,在其路径下创建文件夹:

1
2
mkdir mongodb4
cd mongodb4

在此文件夹下远程网络下载Mongodb的安装包:

1
wegt https://fastdl.mongodb.org/linux/mongodb-shell-linux-x86_64-rhel70-4.4.1.tgz

解压文件夹:

1
tar -zxvf mongodb-linux-x86_64-rhel70-4.2.10.tgz

修改压缩包名称:

1
mv mongodb-linux-x86_64-rhel70-4.2.10 mongodb4.2

二、环境配置

  1. 全局配置

配置系统环境变量:

1
vim /etc/profile

写入配置文件:

1
2
# Mongodb
export PATH="/usr/local/mongodb4/mongodb4.2/bin:$PATH"

退出保存后,输入以下命令使环境变量生效。

1
source /etc/profile
  1. 创建Mongodb数据存放文件夹和日志记录文件夹。

root的根目录下创建以下文件夹:

1
2
mkdir -p /data/db
mkdir -p /logs
  1. 创建Mongodb运行时使用的配置文件。

进入mongodb4文件夹下的bin目录

1
cd /usr/local//mongodb4/mongodb4.2/bin/

此时所在的路径为:

1
/usr/local/mongodb4/mongodb4.2/bin

创建MongoDB.conf配置文件:

1
vim mongodb.conf

输入以下内容:

1
2
3
4
5
6
dbpath = /data/db #数据文件存放目录
logpath = /logs/mongodb.log #日志文件存放目录
port = 27017 #端口
fork = true #以守护程序的方式启用,即在后台运行
# auth=true #需要认证。如果放开注释,就必须创建MongoDB的账号,使用账号与密码才可远程访问,第一次安装建议注释
bind_ip=0.0.0.0 #允许远程访问,或者直接注释,127.0.0.1是只允许本地访问
  1. 加载配置文件,并启动MongoDB服务。
1
./mongod  -f  mongodb.conf

通过以下命令查看端口是否映射成功:

1
2
3
4
5
netstat -nltp|grep mongod
或者:
netstat -nltp|grep 27017
或者
ps -ef | grep mongo

以上命令查看MongoDB是否已经启动以及端口是否成功开启。

三、Mongodb启动及账号创建

查看bin目录下的问文件目录,通过ls命令。

image-20201109101402352

目录下存在mongo,启动mongo命令。

1
mongo

image-20201109110713339

以上界面是MongoDB启动时,采用的超级权限(即关闭了认证,不需要认证即能登录MongoDB)。

由于第一次使用MongoDB时,MongoDB默认不存在任何用户,所以我们在前面的配置文件中关闭了认证的权限(# auth=true),以方便我们后续自己能够创建一个用户使用。

  1. 使用admin数据库(admin数据库用来管理用户权限)
1
2
3
4
5
6
7
show dbs # 展示目前的所有数据库
-----
admin 0.000GB
config 0.000GB
huaJT 0.013GB
local 0.000GB
test 0.026GB

进入admin数据库:

1
2
3
use admin
----
switched to db admin

创建管理员用户:

1
2
3
4
5
6
7
8
> use admin
> db.createUser(
{
user:"root",
pwd:"123456",
roles:[{role:"root",db:"admin"}]
}
)

以上字段的含义,创建一个用户,用户名是:root;密码是:123456;赋予的权限是root权限,可以操控的数据库有admin数据库,这种用户的权限较高。

下面创建一个普通用户,供我们后续的实验测试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use admin
db.createUser(
"user" : "user",
"pwd" : "123456",
"roles" : [
{
"role" : "dbOwner",
"db" : "test1"
},
{
"role" : "dbOwner",
"db" : "test2"
}
]
)

此次创建的用户名是:user,密码是:123456;用户角色是:dbOwner,是test1test2数据库的用户管理者。

  1. 给创建的用户赋予权限
1
db.auth("用户名","密码")

即:

1
2
3
4
db.auth("user","123456")
> 1
db.auth("root","123456")
> 1

出现1表明操作操作成功。

四、远端连接配置

通过以上三步,我们已经安装了Mongodb并配置了Mongodb相关配置文件以及创建了

Mongodb用户。接下来,就需要对Mongodb进行远程连接的配置。

  1. 首先开启认证,关闭MongoDB服务端,重新启动,刷新配置文件使其生效。

进入bin目录下,修改mongodb.conf,此时的路径为:/usr/local/mongodb4/mongodb4.2/bin

1
vim mongodb.conf

开启用户认证(以下的全部配置):

1
2
3
4
5
6
dbpath = /data/db #数据文件存放目录
logpath = /logs/mongodb.log #日志文件存放目录
port = 27017 #端口
fork = true #以守护程序的方式启用,即在后台运行
auth = true #需要认证。如果放开注释,就必须创建MongoDB的账号,使用账号与密码才可远程访问,第一次安装建议注释
bind_ip=0.0.0.0 #允许远程访问,或者直接注释,127.0.0.1是只允许本地访问

关闭Mongodb服务端

1
./mongod  --shutdown

重新启动服务器端并刷新配置文件

1
./mongod  -f  mongodb.conf

此时,关于认证的配置已经全部结束,下面我们对Mongodb进行服务器端的使用测试。

登录Mongodb类似于MySQL,采用以下命令。

1
mongo -uroot -proot

登录我们之前的创建的user账户:

1
mongo -uuser -p123456

image-20201109132946205

由于之前,我们创建user账户时,给予了它对test1test2数据库的权限;所以我们此时可以创建test1test2并使用。

首先明确以下概念:

Mongodb中的collection对应着Mysql中的表;

Mongodb中的document对应着Mysql中的记录。

Mongodb中创建数据库就直接使用use 数据库名称;例如创建test1数据库,则use test1

1
2
> use test1
switched to db test1

此时系统创建了test1,但只是预创建。如果,我们没有对其进行任何操作,即数据库中不存在任何信息,那么当我们切出这个数据库时,系统就会释放这个数据库的内存信息,就不再存在这个数据库。

test1数据库中插入collection,并创建document

1
db.firstCollection.save({"name":"Tom","age":"18"})

这里创建了一个collection-firstCollection。存入了姓名和年龄信息。

1
2
show collections # 展示数据库中的所有collection
db.firstCollection.find() # 展示firstCollection集合的全部文档信息

至此,Mongodb本地使用的配置已经全部配置完毕,下面是开启远程连接的操作。

  1. 登录阿里云,开启服务器端的安全组;因为Mongodb服务器端监听的端口是27017,故需要配置安全组,端口号为27017

image-20201109135100424

同时配置内网入方向规则和内网出方向规则。

  1. 阿里云服务器端开启防火墙,并放行27017端口。

查看防火墙状态:

1
systemctl status firewalld

开启防火墙:

1
systemctl start firewalld

关闭防火墙:

1
systemctl stop firewalld

确认firewalld状态:

1
systemctl status firewalld

开放27017端口:

1
firewall-cmd --permanent --zone=public --add-port=27017/tcp

至此,通过以上的步骤,我们配置了阿里云的内网规则;服务器端放行了27017端口,允许远程可以访问。

  1. 测试连接

打开浏览器,访问自己服务器端的IP地址:端口号

1
IP地址:27017

例如:

1
106.65.34.210:27017

若出现以下画面,则说明远程连接访问配置成功。

image-20201109140130873

五、本地通过Pycharm连接Mongodb

我们在远程服务器端的一系列配置,就是为了能够在客户端操作Mongodb数据库。我们采用最简单的方式,那就是利用Pycharm的插件Mongo Explorer来帮助我们进行可视化操作。

Pycharm中的插件下载等工作就不再赘述。下面即对Mongodb的连接的操作:

进入Mongo Explorer的配置,General项的配置为:

image-20201109140820301

Label:随便填写,用于标识数据库。

Server url(s)IP地址:端口号

User Database:连接的数据库名称。

接下来进入第二项Authentication,进行配置。

image-20201109141100431

Mysql一样,填上UsernamePassword即可,下方的Auth.mechanism选择第一项。

点击Test Connection进行测试。

image-20201109141505712

大功告成!

至此,我们完成了Mongodb的下载安装以及相关配置,最后到客户端对服务器端的远程连接,完成了可视化操作。

参考文献

[1] Linux安装、运行MongoDB

[2] MongoDB用户创建

[3] 解决FirewallD is not running问题


Comment