1. windows配置MongoDB
1.1 安装
MongoDB官网下载,安装时自定义安装路径,其他默认。
假如我们安装到:H:/MongoDB中,完成后进入该目录新建一个data文件夹作为数据库存放路径和log文件夹存放日志文件。
1.2 创建配置
配置文件路径:
# windows配置路径需要根据自己的安装路径,例如:
windows: `H:\MongoDB\bind\mongod.cfg`
linux: `/etc/mongod.cfg`
配置文件mongod.cfg主要内容:
storage:
dbPath: H:\MongoDB\data
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: H:\MongoDB\log\mongod.log
net:
port: 27017
bindIp: 127.0.0.1
# 启用认证
#security:
# authorization: enabled
1.3 sc命令创建MongoDB,如果安装时自动创建的无法运行则删除后再手动创建
创建命令:
sc.exe create MongoDB binpath="H:\MongoDB\bin\mongod.exe --service --config=H:\MongoDB\bin\mongod.cfg"
删除命令:
sc.exe delete MongoDB
1.4 启动服务和关闭服务
net start MongoDB
##############运行结果#############
#>MongoDB 服务正在启动
#>MongoDB 服务已经启动成功
net Stop MongoDB
##############运行结果#############
#>MongoDB 服务正在停止
#>MongoDB 服务已经停止成功
2. 打开MongoDB权限认证
MongoDB 默认直接连接,无须身份验证,如果当前机器可以公网访问,且不注意Mongodb 端口(默认 27017)的开放状态,那么Mongodb就会产生安全风险,被利用此配置漏洞,入侵数据库。
2.1 配置文件
mongodb带访问认证的配置文件路径H:\MongoDB\bin\mongod.cfg
,文件主要内容:
storage:
dbPath: H:\MongoDB\data
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: H:\MongoDB\log\mongod.log
net:
port: 27017
bindIp: 127.0.0.1
# 打开认证
security:
authorization: enabled
2.2 创建管理员
使用 mongod 启动数据库, 新建终端:
mongod -f H:\MongoDB\bin\mongod.cfg
运行mongodb时需要加上配置文件或自定义参数。
新建另一个终端,运行下面命令:
mongo
use admin
db.createUser(
{
user: "root",
pwd: "root",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
管理员创建成功,用户名:root 密码:root
2.3 创建用户
在2.2基础上,继续执行
db.auth("adminuser", "adminpass")
# 输出 1 表示验证成功
db.createUser(
{
user: "testuser",
pwd: "testpass",
roles: [ { role: "readWrite", db: "test_database" },
{ role: "read", db: "bar" } ]
}
)
用户创建成功,用户testuser
, 密码testpass
,
用户对数据库test_database
有读写权限,对bar
只有读权限
2.4 MongoDB用户验证
启动带访问控制的 Mongodb, 新建终端:
mongod -f H:\MongoDB\bin\mongod.cfg
现在有两种方式进行用户身份的验证
第一种 (类似 MySql) 客户端连接时,指定用户名,密码,db名称
mongo -f H:\MongoDB\bin\mongod.cfg -u "testuser" -p "testpass" --authenticationDatabase "admin"
第二种 客户端连接后,再进行验证
mongo
# 认证用户需要在admin数据库下,认证之后再切换到用户数据库
use admin
db.auth("testuser", "testpass")
use test_database
show collections
2.5 用户的删除
同上的方式打开Mongo终端, 并切换到admin数据库
use admin
db.dropUser('test')
# 输出true表示成功删除
2.5 URL访问方式
生产中常用 URI 形式对数据库进行连接
mongodb://127.0.0.1:27017/test_database
添加用户名密码验证
mongodb://testuser:testpass@127.0.0.1:27017/test_database
2.6 内建用户
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
3. MongoDB可视化图形界面推荐:adminMongo
安装 adminMongo
需要 node.js
环境,node.js官网安装后,Github下载adminMongo,解压后到解压目录运行下命令:
# 安装
npm i
# 运行。每次调用此命令即可运行
npm start