MongoDB安装和配置

官网下载5.0.3, 并安装. Windows下安装后并选择使用windows 服务来启动mongo服务.

 

======================================

免密登录

======================================

初次登录, 打开 mongo.exe 客户端, 不需要输入用户密码就能登录, 安全性不高, 后面介绍如何加上安全认证.

 

 

在mongo.exe中执行show dbs命令, 能显示有三个数据库, 说明登录成功.  

 

 

查看 mongo 的配置文件mongod.cfg

注意默认绑定IP 是127.0.0.1, 如果要在局域网内访问mongo服务, 需要修改IP为 0.0.0.1, 即绑定所有的网卡. 

 

 

======================================

创建账号

====================================== 

创建一个mongoDB 的超级管理员root账号

先切到admin db下, 账号名设定为 root, 角色也选 root. 

use admin
db.createUser({user:'root', pwd: '123456', roles:['root']})

使用 db.auth() 方法可以验证用户密码是否OK.

 

 

 

在test db 下的test_user/test_guest/test_owner 账号

use test
db.createUser({user:'test_user', pwd: '123456', roles:[{db:'test', role:'readWrite'}]})
db.createUser({user:'test_guest', pwd: '123456', roles:[{db:'test', role:'read'}]})
db.createUser({user:'test_owner', pwd: '123456', roles:[{db:'test', role:'dbOwner'}]})

 

 

在 admin 数据库的 system.users 集合中, 可以查看所有用户信息. 

 

======================================

启用验证方式登录

======================================

mongo 的配置文件mongod.cfg 增加 auth 选项

mongod.cfg新版使用yml格式, 配置如下:

security:
    authorization: enabled

mongod.cfg老版文件, 配置如下:

auth=true

 

再次启动mongo.exe客户端, 运行 show dbs, 没有列出任何数据库, 可见并未进行真正登录成功

 

 

mongodb.exe 客户端使用账号密码方式登录,  以root账号登录:

.\mongo.exe mongodb://localhost:27017/admin -u root -p 123456

端口后的/db, 这里的db和应用程序连接url的authSource含义相同, 用来指定在哪个库验证用户. 虽然 admin 库下存储所有账号的用户名和密码, 但 authSource 参数不一定就是 admin 库, 准确地说: 在哪个库下创建用户, authSource 就是那个库.

root 账号虽然能管理任何数据库, 但不能直接登录test 数据库. 

 

 

test_owner 账号登录:

 

 

======================================

 应用程序url写法:

====================================== 

mongodb://root:123456@127.0.0.1:27017/admin?authSource=admin&w=majority&wTimeoutMS=5000&journal=true&readPreference=primary&retryWrites=true

mongodb://test_owner:123456@127.0.0.1:27017/test?authSource=test&w=majority&wTimeoutMS=5000&journal=true&readPreference=primary&retryWrites=true
  • authSource 参数, 用来指定在哪个库验证用户. 虽然 admin 库下存储所有账号的用户名和密码, 但 authSource 参数不一定就是 admin 库, 准确地说: 在哪个库下创建用户, authSource 就是那个库.
  • retryWrites 采用可重试写入方式, 设定 retryWrites 为true 后, writeConcern 参数配不能设置为 0
  • w 参数即 writeConcern, 设置为 majority, 保证每次写操作都成功写入到复制集中的多数服务器中, 数据安全性较好.
  • j 参数即 journal HAL日志, j=true, 落盘后返回写操作, j=false, 刷到内存后即返回写操作.
  • wTimeoutMS 设定 writeConcern 的超时时间, 单位毫秒, 如果没有设定, 则写操作可能会无限阻塞等待.
  • readPreference 参数, 设定读操作选用节点的策略, 默认为只从主节点读取, 可选项有:
    •    primary (只主)只从 primary 节点读数据,这个是默认设置
    •    primaryPreferred (先主后从)优先从 primary 读取,primary 不可服务,从 secondary 读
    •    secondary (只从)只从 scondary 节点读数据
    •    secondaryPreferred (先从后主)优先从 secondary 读取,没有 secondary 成员时,从 primary 读取
    •    nearest (就近)根据网络距离就近读取,根据客户端与服务端的PingTime实现

 

======================================

MongoDB for VS Code插件的使用

======================================

MongoDB 官方的VS code插件, 可以编写playground 文件, 语法是 js, 可以编写一些CRUD的脚本, 

如果是使用Run selected line from playground 命令, 选择部分要包含 use("test") 代码来切换到目标DB, 否则都是在默认db中执行.

另外, 输出窗口也切换到 Playground output, 这样我们能看到一些自己的print()结果.   

 

 

 

 

======================================

mongodb role类型

======================================

数据库用户角色(Database User Roles)

read:授予User只读数据的权限

readWrite:授予User读写数据的权限

 

数据库管理角色(Database Administration Roles)

dbAdmin:在当前DB中执行管理操作

dbOwner:在当前DB中执行任意操作

userAdmin:在当前DB中管理User

 

备份和还原角色(Backup and Restoration Roles):

backup

restore

 

跨库角色(All-Database Roles):

readAnyDatabase:授予在所有数据库上读取数据的权限

readWriteAnyDatabase:授予在所有数据库上读写数据的权限

userAdminAnyDatabase:授予在所有数据库上管理User的权限

dbAdminAnyDatabase:授予管理所有数据库的权限

 

集群管理角色(Cluster Administration Roles):

clusterAdmin:授予管理集群的最高权限

clusterManager:授予管理和监控集群的权限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.

clusterMonitor:授予监控集群的权限,对监控工具具有readonly的权限

hostManager:管理Server

 

超级角色(super master Roles)

root :超级账户和权限,只在admin中可用

 

======================================

参考

======================================

MongoDB - 标签 - EdisonZhou - 博客园 (cnblogs.com)

https://docs.anaconda.com/anaconda-repository/admin-guide/install/config/config-mongodb-authentication/

https://blog.csdn.net/qq_33692349/article/details/90524189

posted @ 2021-11-07 16:29  harrychinese  阅读(1394)  评论(0编辑  收藏  举报