MongoDB配置(Windows10)

本文最后更新于:8 个月前

本文介绍Windows10环境下,MongoDB的配置。内容包括:配置文件,启动连接身份验证、创建数据库用户

MongoDB配置(Windows10)

一、配置文件(Windows10)

通过【服务-MongoDB Server-属性】,可以查看到MongoDB运行使用的配置文件目录为:<install directory>\bin\mongod.cfg

image-20221128214425888

使用编辑器VSCode打开该文件,可以看到里面默认定义了data、log的存放路径,绑定的URL和端口。

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
33
34
35
36
37
38
39
40
# mongod.conf

# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
dbPath: C:\Program Files\MongoDB\Server\6.0\data
journal:
enabled: true
# engine:
# wiredTiger:

# where to write logging data.
systemLog:
destination: file
logAppend: true
path: C:\Program Files\MongoDB\Server\6.0\log\mongod.log

# network interfaces
net:
port: 27017
bindIp: 127.0.0.1


#processManagement:

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

更多配置参考:Configuration File Options — MongoDB Manual

二、启动身份验证

MongoDB默认没有开启身份验证,不用验证身份即可进行各种操作。

在启动身份验证之前,首先创建一个管理员用户。

1、创建管理员用户

首先确保MongoDB服务已经启动,然后使用MongoDB shell工具(我使用的是MongoDB Compass的控制台)连接到数据库

1
2
3
4
5
6
use admin		#admin是用户的身份验证数据库,用户将对该数据库进行身份验证,但但用户可以在其他数据库中担任角色; 即用户的认证				  数据库不限制用户的权限
db.createUser({
user:"root", #用户名自定义
pwd:"123456", #密码自定义
roles:[{role:"userAdminAnyDatabase",db:"admin"}] #创建具有userAdminAnyDatabase角色的用户,
}) #该用户可以在指定数据库创建和修改用户

image-20221128212226746

2、修改mongod.cfg

修改如下,(注意格式,如果格式不对将导致服务无法启动)

image-20221128220246102

3、重启服务

image-20221128223856895

4、重新连接

使用MongoDBCompass重新连接MongoDB,按照原先的URI连接,结果提示error

image-20221128224037782 image-20221128224018281

需要在URI中添加authentication字段,格式如下:

image-20221128224134454

至此,简单的身份验证就配置完成!

三、常用的内置roles

img

四、为数据库创建用户

1、创建用户

创建的用户只能用于访问该数据库,即一个用户对应一个数据库。

使用createUser()方法创建用户的前提是,必须使用「管理员用户」(即【二-1】中创建的)连接数据库进行操作

以下示例演示,为laf数据库创建一个用户

1
2
3
4
5
6
7
use laf		#如果laf存在,切换到laf;如果不存在,创建laf数据库
db.createUser({
user: 'timegogo', #用户命名为timegogo
pwd: passwordPrompt(), #该方法的作用是在调用完createUser后,给出提示,让你输入密码,这样做的好处是输入的密码不可见
roles: [{role:'readWrite', db:'laf'},
{role:'read', db:'admin'}]
})

上面使用了passwordPrompt()方法来输入密码,效果如下:

image-20221128231807443

创建用户时所在的数据库就是该用户的authentication database(身份验证的数据库)。尽管该用户是在当前数据库验证身份,但是它可以拥有其它数据库的角色(以及相应的权限)

2、使用新用户连接数据库

退出mongosh,然后使用新用户重新连接

image-20221128234715437 image-20221128234656445

可以看到,新用户只能访问到自己roles权限范围内的内容。


MongoDB配置(Windows10)
http://timegogo.top/2022/11/28/后端/MongoDB配置(Windows10)/
作者
丘智聪
发布于
2022年11月28日
更新于
2023年7月16日
许可协议