• 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

  • 相关阅读:
    oracle当需要commit
    Win7 扩容磁盘分区
    MP3的频率、比特率、码率与音质的关系
    关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)
    开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
    Java串口通信具体解释
    android 计时器,倒计时
    联想A208T ROOT
    三层架构(我的理解及具体分析)
    Java实现BASE64编解码
  • 原文地址:https://www.cnblogs.com/harrychinese/p/mongodb.html
Copyright © 2020-2023  润新知