宝塔面板配置MongoDB

当前版本

1
2
3
4
5
6
{
宝塔面板: '7.5.2',
Ubuntu: '18.04.4 LTS',
MongoDB: '4.0.10'
}

本文仅适用于上述版本,其他版本中配置过程可能存在差别

本文参考 宝塔面板 mongodb设置账号,密码,数据库,并配置远程连接 并结合实际体验编写

本文不附带图片,所有过程均以文字说明为主。

安装MongoDB

登录宝塔面板,点击软件商店,找到MongoDB,点击安装,稍等片刻即可完成。

配置MongoDB

这是安装完成后默认的配置文件内容,注意 authorization 要为 disabled

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
## content
systemLog:
destination: file
logAppend: true
path: /www/server/mongodb/log/config.log

# Where and how to store data.
storage:
dbPath: /www/server/mongodb/data
directoryPerDB: true

journal:
enabled: true
# how the process runs
processManagement:
fork: true
pidFilePath: /www/server/mongodb/log/configsvr.pid

# network interfaces
net:
port: 27017
bindIp: 127.0.0.1

#operationProfiling:
#replication:
# replSetName: bt_main
security:
authorization: disabled
javascriptEnabled: false

#sharding:
# clusterRole: shardsvr

连接MongoDB及账号配置

创建完成时,数据库中应该会包含 admin 数据库如果没有,可以新建一个。

打开SSH终端,进入MongoDB目录,默认安装在 /www/server/mongodb/bin

1
> cd /www/server/mongodb/bin

进入mongoDB环境,并切换到admin数据库

1
2
3
4
5
6
> mongo

# 查看当前所有数据库
> show databases

> use admin

查看当前数据库中有哪些用户,当没有用户时不会显示任何信息

1
> show users

创建一个管理员账户

1
> db.createUser( { user: 'admin', pwd: 'password', roles:[ { role: 'userAdminAnyDatabase', db: 'admin' } ] } )

这条命令的意思是:在admin数据库中创建用户admin,并给该用户admin数据库上的userAdminAnyDatabase角色。

admin用户用于管理账号,不能进行关闭数据库等操作。

相关文档:createUser - 创建一个数据库新用户

执行命令会看到类似的信息

1
2
3
4
5
6
7
8
9
Successfully added user: {
"user": "admin",
"roles": [
{
"role": "userAdminAnyDatabase",
"db": "admin"
}
]
}

创建完成后再次执行 show users 命令,会显示刚才创建的用户信息。

接下来创建root账号

1
> db.createUser({ user: 'root', pwd: 'password', roles: [ { role: 'root', db: 'admin' } ] })

测试账号登录

1
> db.auth('user', 'pwd')

成功返回1,失败返回0

创建数据库以及账号

使用use语法创建数据库,数据库不存在时会自动创建一个新的数据库,数据库存在时会切换到指定数据库。

1
> use [database_name]

创建当前数据库管理角色

1
> db.createUser( { user: "user",pwd: "password",roles: [ { role: "dbOwner", db: "yourdatabase" } ] } )

role: 'dbOwner' 代表数据库所有者角色,它拥有当前数据库的最高权限。注意,创建该角色时请先切换到刚才创建的数据库中。

创建完成后使用 show users 查看用户。

修改配置文件,授权远程登录

1
2
3
4
5
authorization: disabled

# 更改为

authorization: enabled

需要注意,要设置放行端口,否则本地将无法连接到数据库。

Mongodb 的 BindIP 需要设置为 0.0.0.0,表示不限制ip。

当前部分常用命令

1
2
3
4
5
6
7
8
# 查看当前所有数据库
> show databases
> show dbs
# 进入指定数据库
> use [database]
# 查看所有用户
> show users

本地连接MongoDB

这里我尝试了Navicat和MongoDB Compass

其中Navicat连接时需要使用新建的一个数据库,和该数据库的用户才可以登录,使用admin账号登陆后查看新建的数据库提示未授权。

而MongoDB Compass则可以使用admin账号登录,与Navicat相反,我使用指定账户登录数据库时提示失败。

这方面可能是软件差异或是配置问题,但现阶段就不用先纠结这些了。

以下内容仅作简单说明,具体请查看MongoDB文档。

MongoDB内置角色有如下:

  1. 数据库用户角色:read、readWrite;

  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;

  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

  4. 备份恢复角色:backup、restore;

  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

  6. 超级用户角色:root
    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

  7. 内部角色:__system