华为云用户手册

  • 如何启用MapReduce命令 MapReduce命令由DDS参数模板参数“security.javascriptEnabled”控制,默认值为“false”,表示mapreduce和group命令将无法使用。如果需要使用MapReduce命令,将参数值修改为“true”,修改后需要重启实例才生效。 对于集群实例,需要变更全部shard节点关联参数模板中对应参数值,再重启实例生效。 对于副本集或单节点实例,直接变更实例关联参数模板中对应参数值,再重启实例生效。 如何变更参数值请参见编辑参数模板。
  • 使用RocksDB存储引擎的华为云DDS在执行大量增删改操作时,发现监控中出现磁盘来回波动、CPU毛刺的现象,这是为什么? RocksDB存储引擎下,所有的写入均为追加写,不管是更新还是删除,都不会直接修改原数据,而是追加写在尾端,因此同key可能会在磁盘上存在不同版本的值。追加写过程中,同一条数据的多版本同时存在,磁盘容量会上升。 不同版本的值最终会在新写入的数据量到达一定量后触发后台归并,即RocksDB的Compaction动作。归并数据动作是异步操作,当一轮运行结束后会将本轮涉及到的多版本数据进行归并合一,归并后会生成新的单版本数据数据文件,删除老的多版本数据文件,在生成新文件和删除老文件这段过渡期,新老文件会同时存在,即磁盘此时会短暂上涨,归并数据结束后,磁盘容量会即时下降。 归并数据操作本身会占用少量CPU资源,因此可能会出现轻微的CPU毛刺现象。 如果发现磁盘和CPU占用持续过高,请联系华为工程师处理。
  • RocksDB和WiredTiger两者有什么区别? 写机制的区别 WiredTiger存储引擎的数据结构为B+ tree,落盘数据中一个键(key)对应一个版本号(version),对某一个键(key)进行插入、更新或删除操作都是直接操作对应的数据节点。 Rocksdb存储引擎的数据结构为LSM-tree,写数据就像写日志,以追加写的方式进行。落盘数据除了一个键(key),值(value)之外,还有对应的版本号(version)。同一个键(key)在磁盘上有多个版本(version)的数据。业务层的插入、更新、删除操作,在Rocksdb侧都是写操作。这些多版本数据积压到一定阈值后,会触发后台自动归并,对多版本(version)的数据进行合并,这个行为就是RocksDB的Compaction。 数据组织的区别 WiredTiger存储引擎中一个集合(collection)的数据或者一个索引的数据对应一个磁盘文件,集合是多大,对应的文件就是多大。 RocksDB存储引擎下则没有集合(collection)维度,而是64M一个文件分布在磁盘上。
  • 华为云DDS 4.2及其以上版本将存储引擎切换为RocksDB会对业务产生影响吗? 功能方面:存储引擎是数据库的一个组件,负责管理数据在内存和磁盘中的存储方式。RocksDB和WiredTiger虽然是不同的存储引擎,数据库服务会封装存储引擎,极大兼容社区接口使用方式,开发者使用层面无使用差异感知,业务无差异影响。 性能方面:当前RocksDB存储引擎已经经过长期的社区演进,结合DDS团队对其定制化的开发,性能方面二者切换无明显差异,部分查询场景下RocksDB存储引擎表现更优,存储或计算资源使用方面或存在少量差异。
  • 使用RocksDB存储引擎在典型业务场景下有哪些表现差异与优化建议? 表2描述了RocksDB相较于WiredTiger在一些典型业务场景下的表现差异与优化建议。 表2 典型业务场景下RocksDB的表现差异与优化建议 业务场景 RocksDB的表现差异 优化建议 示例 多文档扫描 RocksDB在文档扫描(docsExamined)多的业务场景下对CPU、IO等资源消耗相较于WiredTiger更多。 建议通过添加适当的索引进行优化,提高扫描效率,降低CPU、IO等资源的消耗。 例如,在coll表A字段没有添加索引的情况下以该字段为条件进行查询:db.coll.find({A: 1})。
  • RocksDB优势在哪里? 表1从开源生态、存储空间、可定制化、内存高压场景、频繁更新删除场景、多表场景六个方面描述了RocksDB对比WiredTiger的优势。 表1 RocksDB与WiredTiger对比 存储引擎 RocksDB WiredTiger 开源生态 RocksDB相比WiredTiger有更好的开源生态(github stars),一些知名数据库比如TIDB/CRDB/YUGADB都采用了RocksDB做为存储引擎。 开源社区生态不如RocksDB。 存储空间 RocksDB数据写入过程中,部分业务场景会临时保存多个版本的数据,多版本数据会在后续做异步归并为最终版本,因此存储空间可能会存在临时上涨。 WiredTiger落盘只保留最新版本的数据,存储空间消耗相对少。 可定制化 RocksDB性能调优参数较多,支持根据业务的读写能力要求做定制化的参数修改。 WiredTiger性能调优参数较少。 内存高压场景 RocksDB读写性能稳定,不会随着内存压力变化。 WiredTiger需要频繁地刷脏页,进行内存与磁盘数据置换,引起读写性能波动比较大。 频繁更新删除场景 RocksDB在积攒了一定量的新写数据后,会自动异步触发后台compact线程对同一数据的多版本进行归并聚合,释放多余的磁盘空间,因此基本上不会出现磁盘碎片化问题。 WiredTiger在删除数据进行数据多版本归并聚合后,会空余出磁盘空间碎片,并且不会将这部分磁盘空间返回给操作系统,而是留待后续写入使用,磁盘碎片化问题较为明显。 多表场景 RocksDB支持10K以上的表及索引数量。 WiredTiger在表及索引数量达到1K以上时,读写性能会受到影响。
  • 高版本MongoDB迁移至低版本时,兼容度如何评估? 文档数据库作为一种数据库软件类云服务与传统软件一样,高版本兼容低版本的功能,少数情况出现功能断代时官方资料会给予专门的总结和公布。 当从高版本迁移至低版本时意味着高版本出现的新功能在低版本中均不支持,所以需要您侧重评估在业务中是否使用了这类新功能。 评估方式通常为预估建议和演练建议: 预估建议:通过查询社区文档版本发布说明,可以查看新本发布时的新增特性,进行逐一分析判断是否在业务代码中使用该特性; 演练建议:通过华为云 数据复制服务 或者社区提供的通过mongodump和mongorestore工具迁移数据至低版本,进行业务功能模拟测试,通过观察业务功能实际表现验证迁移至低版本是否可行; 如果您的业务较为复杂,也可以联系华为技术专家寻求专业的评估支撑。 父主题: 数据库迁移
  • 导入Windows操作系统 单击“开始”,运行框输入“MMC”,回车。 在MMC控制台菜单栏中单击“文件”,选择“添加/删除管理单元”。 在“添加或删除管理单元”对话框,选择“可用的管理单元”区域的“证书”。单击“添加”添加证书。 在“证书管理单元”对话框,选择“计算机账户”,单击“下一步”。 在“选择计算机”对话框,单击“完成”。 在“添加或删除管理单元”对话框,单击“确定”。 在MMC控制台,双击“证书”。 右键单击“受信任的根证书颁发机构”,选择“所有任务”,单击“导入”。 单击“下一步”。 单击“浏览”。 找到下载的根证书ca.crt文件,单击“打开”,然后在向导中单击“下一步”。 单击“下一步”。 单击“完成”。 单击“确定”,完成根证书导入。
  • DDS是否支持设置majority级别的readConcern MongoDB可以通过writeConcern来定制写策略,通过readConcern来定制读策略。 当指定readConcern级别为majority时,能保证用户读到的数据已经写入到大多数节点,而这样的数据不会发生回滚,避免了脏读的问题。 DDS目前不支持设置majority级别的readConcern。 如果有该需求的场景,可以将WriteConcern设置为majority,表示将数据写入到大多数节点,这样就保证了大多数节点的数据一致。然后通过读取单个节点数据就能保证用户读到的数据已经写入到大多数节点,而这样的数据不会发生回滚,避免了脏读的问题。 父主题: 数据库参数
  • 用户需要关注实例的哪些参数 参数相关说明如下: 各参数的详细说明请参见MongoDB官网。 “net.maxIncomingConnections”依赖于实例的规格,实例规格不同对应其默认值也不同,因此,此参数在用户未设置前显示为“default”。 “disableJavaScriptJIT”和“security.javascriptEnabled”配合使用,设置统计函数功能。 “disableJavaScriptJIT”,默认值为“true”,表示禁用JavaScriptJIT编译技术。 “security.javascriptEnabled”,默认值为“false”,表示不允许mongod上执行javascript脚本,mapreduce、group等命令将无法使用。 父主题: 数据库参数
  • 解决方案 对于集群实例,可能是因为选择和设置的分片不合理导致数据分布不均衡,从而引起磁盘空间使用率高的情况。 此时,可以对数据库集合进行合适的分片,具体操作请参见设置数据分片以充分利用分片性能。 随着业务数据的增加,原来申请的数据库磁盘容量不足。此时建议扩容磁盘空间,确保磁盘空间足够。 集群实例,请参见扩容集群实例的磁盘空间。 副本集实例,请参见扩容副本集实例的磁盘空间。 单节点实例,请参见扩容单节点实例的磁盘空间。 如果原有实例规格的磁盘已是最大的,请先升级规格。 集群实例,请参见变更集群实例的CPU和内存规格。 副本集实例,请参见变更副本集实例的CPU和内存规格。 单节点实例,请参见变更单节点实例的CPU和内存规格。 存在大量过期的数据文件占用磁盘空间,此时需要及时处理过期数据文件。例如:如果整个库不需要了,则可以执行dropDatabase命令进行删除,从而快速释放磁盘空间。 后台数据处理机制原因。 无论写入、更新或删除(包括索引插入和删除)等操作,在后台实际上都会转成写入。实例在使用过程中,删除数据并不会回收磁盘空间,这些未被回收的磁盘空间被称为磁盘碎片。磁盘碎片会被数据库继续使用,当有新数据插入时,会重复利用这些碎片,而不需要新申请磁盘空间。根据底层存储引擎的不同(RocksDB和WiredTiger),又会有不同的具体表现。 RocksDB在删除数据后,将删除操作直接转化为追加写,在积攒了一定数据量的冗余数据后,会自动触发后台compact线程对同一数据的多版本进行归并聚合,从而释放多余的磁盘空间,因此建议等待系统自动回收。当磁盘空间使用率较高,接近只读状态阈值时,请联系华为工程师处理。 WiredTiger在删除数据,进行数据多版本归并聚合后,也会空余出磁盘空间碎片,但wiredTiger并不会将这部分磁盘空间返还给操作系统,而是打上标记预留给当前collection后续的写入,此collection后续的写入会优先使用这部分预留的磁盘空间,如果需要释放这部分磁盘空间,可以尝试通过执行compact命令进行释放(注:此命令会阻塞正常业务,因此默认情况下是禁用状态)。
  • 问题描述 DDS集群持续写入数据,写入后查询报错。 示例: W SHARDING [Balancer] Failed to enforce tag ranges :: caused by :: ExceededTimeLimit: Unable to obtain shard utilization information for shard01 due to Operation timed out, request was RemoteCommand -- target: 192.168.*.*:8635, db: admin, cmd:{ getShardStatistics: 1, maxTimeMS: 30000 }
  • 数据删了磁盘空间但没有减少 无论写入、更新或删除(包括索引插入和删除)等操作,在后台实际上都会转成写入。实例在使用过程中,删除数据并不会回收磁盘空间,这些未被回收的磁盘空间被称为磁盘碎片。磁盘碎片会被数据库继续使用,当有新数据插入时,会重复利用这些碎片,而不需要新申请磁盘空间。根据底层存储引擎的不同(RocksDB和WiredTiger),又会有不同的具体表现。 RocksDB在删除数据后,将删除操作直接转化为追加写,在积攒了一定数据量的冗余数据后,会自动触发后台compact线程对同一数据的多版本进行归并聚合,从而释放多余的磁盘空间,因此建议等待系统自动回收。当磁盘空间使用率较高,接近只读状态阈值时,请联系华为工程师处理。 WiredTiger在删除数据,进行数据多版本归并聚合后,也会空余出磁盘空间碎片,但wiredTiger并不会将这部分磁盘空间返还给操作系统,而是打上标记预留给当前collection后续的写入,此collection后续的写入会优先使用这部分预留的磁盘空间,如果需要释放这部分磁盘空间,可以尝试通过执行compact命令进行释放(注:此命令会阻塞正常业务,因此默认情况下是禁用状态)。 父主题: 资源及磁盘管理
  • 处理方法 优化实例连接,释放不必要的连接。 您可以通过重启实例来临时释放所有的连接。具体请参见重启实例或节点。 您可以查询节点当前连接数,以及当前连接来源,分析各个终端和DDS实例分别建立了多少连接,并作出相应调整,具体请参见如何查询及限制连接数。 修改参数值或对数据库进行规格扩容。 实例的最大连接数可通过修改参数“net.maxIncomingConnections”的值进行调整。如何修改参数值请参见编辑参数模板。 如果参数值是“default”,表示最大连接数为缺省值,并且与实例的规格相关,具体请参见数据库实例规格。 如果调整连接数过大,可能导致服务崩溃,这时只能通过变更实例规格增加承载的连接数的数量,具体请参见变更实例规格。 如果实例参数模板为默认参数模板,由于默认参数模板中不允许修改参数值,您可以创建一个参数模板,并修改对应参数值,修改后将新参数模板关联到该实例。 检查是否有慢查询,建议添加索引进行优化。
  • 操作步骤 打开Robo 3T下载地址:https://robomongo.org/download,单击“Download Robo 3T”。 图1 下载页面 在弹出框中填写相关信息后,单击“Download for Windows”下载“robo3t-1.4.4-windows-x86_64-e6ac9ec5.zip”。 图2 下载工具 解压2下载的压缩包文件,双击解压目录下的“robo3t.exe”文件,开始执行安装。 安装完成后,打开工具,界面展示如图3所示。 图3 工具主界面 工具安装成功后,如需连接实例,请参见《文档数据库服务快速入门》中各实例类型下通过公网连接实例的内容。
  • 如何创建并登录弹性云服务器 创建并登录弹性云服务器,请参见《弹性云服务器快速入门》中“购买弹性云服务器”和“登录弹性云服务器”。 该弹性云服务器用于连接文档数据库实例,需要与待连接的实例处于同一虚拟私有云子网内。 创建弹性云服务器时,要选择操作系统,例如Redhat6.6,并为其绑定EIP(Elastic IP,弹性公网IP)。 正确配置安全组,使得弹性云服务器可以通过文档数据库服务“基本信息”页面下节点的“内网IP”访问文档数据库实例。 父主题: 数据库连接
  • 哪些数据会占用文档数据库实例空间 以下内容占用文档数据库实例空间: 您申请的磁盘空间会有必要的文件系统开销,这些开销包括索引节点和保留块,以及数据库运行必需的空间。 除备份数据以外的用户正常的数据。 文档数据库实例正常运行所需的数据,比如系统数据库、数据库回滚日志、索引等。 文档数据库服务产生的日志输出文件,这些文件会保证文档数据库实例正常稳定地运行。比如oplog文件,默认占磁盘空间的10%,oplog是轮转日志,所以oplog的留存时间主要由oplog产生速率决定,如需修改,可以通过控制台界面修改参数值oplogSizePercent,具体步骤请参见修改DDS实例参数。 父主题: 资源及磁盘管理
  • 为什么在虚拟私有云中使用文档数据库 虚拟私有云允许您在私有、隔离的网络创建虚拟网络环境,从中可以对私有IP地址范围、子网、路由表和网络网关等方面进行控制。借助虚拟私有云,您可以定义虚拟网络拓扑和网络配置,使其非常类似于您在自己的数据中心所操作的传统IP网络。 在下面的情况下您可能想在虚拟私有云中使用文档数据库服务: 您希望运行面向公众的Web应用程序,同时保留公众不可访问的后端服务器。您可以在一个虚拟私有云内同时创建一个文档数据库实例和弹性云服务器实例,同时为弹性云服务器实例分配公网IP,将Web服务器部署在弹性云服务器实例。 父主题: 网络安全
  • 用户平时需要关注实例的哪些性能指标 用户平时需要关注的监控指标有:CPU利用率、内存利用率、磁盘空间利用率。 更多监控指标信息,请参见文档数据库服务支持的监控指标。 可以根据实际应用场景配置告警提示,当收到告警,可采取相应措施消除告警。 配置示例: 如果在某段时间内(如5min),CPU的利用率出现多次(如3次)不低于某特定值(如90%)的情况,则发出相应 云监控 告警。 如果在某段时间内(如5min),内存的利用率出现多次(如4次)不低于某特定值(如90%)的情况,则发出相应云监控告警。 如果在某段时间内(如5min),磁盘的使用率出现多次(如5次)不低于某特定值(如85%)的情况,则发出相应云监控告警。 云监控告警详细配置方法,详见《云监控用户指南》中“告警规则管理”。 如果CPU、内存使用率长期较高,且无法扩容磁盘容量,可以选择变更CPU和内存规格。 采取措施: 收到与磁盘空间利用率有关的告警: 调查磁盘空间消耗,查看是否可以从实例中删除数据或是将数据存档到其他系统以释放空间。 通过磁盘空间扩容增大磁盘空间,请参见扩容存储。 父主题: 监控和告警
  • DDS和社区版MongoDB有什么关系 DDS即文档数据库服务,完全兼容MongoDB社区版3.4/4.0/4.2,部分兼容社区版4.4。兼容性详情请参见版本兼容性。 DDS支持绝大部分的MongoDB命令操作,任何兼容MongoDB的客户端都可以与DDS建立连接进行数据存储及相应操作。 您可以通过文档数据库服务与自建数据库的对比优势来了解更多DDS的优势。 更多DDS的详细信息请参见什么是文档数据库服务。 父主题: 产品咨询
  • 副本集中主备同步存在多长时间的延迟 主节点与备节点的复制延迟是无法利用公式来计算的,它会受到以下因素的影响: 网络通信状况。 主节点的事务压力,即主机每秒执行的事务量。 主节点执行的事务大小,即一个事务要执行多久。 备节点的机器负载状况。 如果主节点在某个时间段压力非常大,每秒执行的事务量非常多,备机通常会出现延迟。 对于文档数据库服务而言,可以在云监控中查看副本集备节点的“主备延时”指标,来观察延迟情况。 父主题: 数据库性能
  • 自定义角色 用户自定义角色是用户通过命令创建的定制化的角色,只包含CRUD操作的一种或多种,或者内置角色的一种或多种。可以通过命令针对不同的资源、不同的操作进行自定义,除了预置角色无法被修改以外,其他应用方式是相同的。 创建、修改和删除角色 要创建角色前,需使用具有权限的用户(可使用rwuser)连接到数据库实例。详情请参见连接数据库。 通过createRole创建自定义角色,可以针对不同db,不同的collection进行权限控制,也可以从其他角色上继承。 角色创建完成后如需调整权限可通过grantPrivilegesToRole,grantRolesToRole,revokeRolesFromRole或revokePrivilegesFromRole命令获取或者回收回权限。详情请参见创建并管理角色。 父主题: 角色管理
  • 预置角色 预置角色是系统自动生成的角色信息,客户端可用的预置角色名称有read,readWrite。 mongodb使用角色来管理数据库的,所以创建一个用户时就需要赋予一个角色。角色除了内置之外,也可以自定义角色。 表1 常见内置角色 角色 权限描述 包含的操作命令 read read角色包含读取所有非系统集合数据和订阅部分系统集合(system.indexes、system.js、system.namespaces)的权限。 changeStream、collStats、dbHash、dbStats、find、killCursors、listIndexes、listCollections readWrite readWrite角色包含read角色的权限同时增加了对非系统集合数据的修改权限,但只对系统集合system.js有修改权限。 collStats、convertToCapped、createCollection、dbHash、dbStats、dropCollection、createIndex、dropIndex、find、insert、killCursors、listIndexes、listCollections、remove、renameCollectionSameDB、update readAnyDatabase readAnyDatabase角色包含对除了config和local之外所有数据库的只读权限。同时对于整个集群包含listDatabases命令操作。 在MongoDB3.4版本之前,该角色包含对config和local数据库的读取权限。当前版本如果需要对这两个数据库进行读取,则需要在admin数据库授予用户对这两个数据库的read角色。 readWriteAnyDatabase readWriteAnyDatabase角色包含对除了config和local之外所有数据库的读写权限。同时对于整个集群包含listDatabases命令操作。 在MongoDB3.4版本之前,该角色包含对config和local数据库的读写权限。当前版本如果需要对这两个数据库进行读写,则需要在admin数据库授予用户对这两个数据库的readWrite角色。 dbAdmin dbAdmin角色包含执行某些管理任务(与schema相关、索引、收集统计信息)的权限,该角色不包含用户和角色管理的权限。 对于系统集合(system.indexes、system.namespaces、system.profile)包含命令操作:collStats、dbHash、dbStats、find、killCursors、listIndexes、listCollections、dropCollection and createCollection(仅适用system.profile) 对于非系统集合包含命令操作:bypassDocumentValidation、collMod、collStats、compact、convertToCapped、createCollection、createIndex、dbStats、dropCollection、dropDatabase、dropIndex、enableProfiler、reIndex、renameCollectionSameDB、repairDatabase、storageDetails、validate dbAdminAnyDatabase dbAdminAnyDatabase角色包含类似于dbAdmin角色对于所有数据库管理权限,除了config数据库和local数据库。同时对于整个集群包含listDatabases命令操作。 在MongoDB3.4版本之前,该角色包含对config和local数据库的管理权限。当前版本如果需要对这两个数据库进行管理,则需要在admin数据库授予用户对这两个数据库的dbAdmin角色。 clusterAdmin clusterAdmin角色包含MongoDB集群管理最高的操作权限。 clusterManager、clusterMonitor和hostManager三个角色的所有权限,并且还拥有dropDatabase操作命令的权限。 userAdmin userAdmin角色包含对当前数据库创建和修改角色和用户的权限。该角色允许向其它任何用户(包括自身)授予任何权限,所以这个角色也提供间接对超级用户(root)的访问权限,如果限定在admin数据中,也包括集群管理的权限。 changeCustomData、changePassword、createRole、createUser、dropRole、dropUser、grantRole、revokeRole、setAuthenticationRestriction、viewRole、viewUser userAdminAnyDatabase userAdminAnyDatabase角色包含类似于userAdmin角色对于所有数据库的用户管理权限,除了config数据库和local数据库。 对于集群包含命令操作:authSchemaUpgrade、invalidateUserCache、listDatabases 对于系统集合admin.system.users和admin.system.roles包含命令操作:collStats、dbHash、dbStats、find、killCursors、planCacheRead、createIndex、dropIndex 父主题: 角色管理
  • 示例 更新用户信息 products数据库中的用户appClient01,其信息如下: { "_id" : "products.appClient01", "token" : NumberLong("8424642624807814713"), "user" : "appClient01", "db" : "products", "customData" : { "empID" : "12345", "badge" : "9156" }, "roles" : [ { "role" : "readWrite", "db" : "products" }, { "role" : "read", "db" : "inventory" } ], "mechanisms" : [ "SC RAM -SHA-1", "SCRAM-SHA-256" ] } 下面操作会替换用户的自定义数据和角色数据: use products db.updateUser( "appClient01", { customData : { employeeId : "0x3039" }, roles : [ { role : "read", db : "assets" } ] } ) products数据库中的用户appClient01,经过更新后信息如下: { "_id" : "products.appClient01", "token" : NumberLong("8424642624807814713"), "user" : "appClient01", "db" : "products", "customData" : { "employeeId" : "0x3039" }, "roles" : [ { "role" : "read", "db" : "assets" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] } 更新用户以仅使用SCRAM-SHA-256凭证 reporting数据库中的用户reportUser256,其信息如下: { "_id" : "reporting.reportUser256", "token" : NumberLong("2827251846225877395"), "user" : "reportUser256", "db" : "reporting", "roles" : [ ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] } 以下操作会将当前同时拥有 SCRAM-SHA-256 和 SCRAM-SHA-1 全权证书的用户更新为只拥有 SCRAM-SHA-256 全权证书的用户。 如果密码未与mechanisms一起指定,则只能将mechanisms更新为用户当前SCRAM机制的子集。 如果密码与mechanisms一起指定,则可以指定任何受支持的SCRAM机制。 对于SCRAM-SHA-256,passwordDigestor必须是默认值 "server"。 db.updateUser( "reportUser256", { mechanisms: [ "SCRAM-SHA-256" ] } ) reporting数据库中的用户reportUser256,经过更新后信息如下: { "_id" : "reporting.reportUser256", "token" : NumberLong("2827251846225877395"), "user" : "reportUser256", "db" : "reporting", "roles" : [ ], "mechanisms" : [ "SCRAM-SHA-256" ] }
  • 示例 创建用户时不同数据库赋予不同角色 使用db.createUser()在products数据库中创建accountAdmin01用户。 use products db.createUser( { user: "accountAdmin01", pwd: "Changeme_123", customData: { employeeId: 12345 }, roles: [ { role: "clusterAdmin", db: "admin" }, { role: "readAnyDatabase", db: "admin" }, "readWrite"] }, { w: "majority" , wtimeout: 5000 } ) 以上操作赋予用户accountAdmin01以下角色: 在admin数据库中角色为clusterAdmin和readAnyDatabase。 在products数据库中角色为readWrite。 创建用户时同一数据库赋予多个角色 以下操作创建一个在products数据库中角色为readWrite和dbAdmin的用户,用户名为accountUser。 use products db.createUser( { user: "accountUser", pwd: "Changeme_123", roles: [ "readWrite", "dbAdmin" ] } ) 创建用户时不赋予角色 以下操作在admin数据库中创建一个用户名为reportsUser的用户,但是没有赋予用户角色。 use admin db.createUser( { user: "reportsUser", pwd: "Chagneme_123", roles: [ ] } ) 创建管理员用户并赋予角色 下面的操作将在admin 数据库中创建名为appAdmin的用户,并赋予该用户对config数据库的读写访问权限,使用户可以更改分片群集的某些设置,如分片均衡器设置。 use admin db.createUser( { user: "appAdmin", pwd: "Changeme_123", roles: [ { role: "readWrite", db: "config" }, "clusterAdmin" ] } ) 创建有身份验证限制的用户 以下操作将在管理员数据库中创建一个名为restricted的用户。该用户只能从IP地址192.0.2.0连接到IP地址198.51.100.0时才能进行身份验证。 use admin db.createUser( { user: "restricted", pwd: "Changeme_123", roles: [ { role: "readWrite", db: "reporting" } ], authenticationRestrictions: [ { clientSource: ["192.0.2.0"], serverAddress: ["198.51.100.0"] } ] } ) 仅使用SCRAM-SHA-256证书创建用户 下面的操作将创建一个只有SCRAM-SHA-256凭据的用户。 use reporting db.createUser( { user: "reportUser256", pwd: "Changeme_123", roles: [ { role: "readWrite", db: "reporting" } ], mechanisms: [ "SCRAM-SHA-256" ] } ) 如果设置了authenticationMechanisms参数,mechanisms字段只能包含authenticationMechanisms参数中指定的值。
  • 操作须知 下面所有操作都对权限要求,默认rwuser用户具备所需权限,如果通过客户自定义用户进行管理,则需要关注是否具备操作权限。 使用具备权限的用户(可使用rwuser)连接到数据库实例。 通过createUser创建所需的用户,通过设置合适的角色来控制对应用户的权限。其中需要注意的是"passwordDigestor" 参数必须是 "server",否则命令会执行失败,增加这个约束是为了避免安全隐患。
  • 用户管理 DDS上用户的权限都是基于角色管理,通过给用户赋予不同的角色来进行差异化的权限控制。 为了给文档数据库实例提供管理服务,您在创建数据库实例时,文档数据库服务会自动为实例创建admin、monitor和backup账户。如果试图删掉、重命名、修改这些账户的密码和权限,会导致出错。 对于数据库管理员账户rwuser,以及您所创建的账户,允许修改账户的密码。 创建用户 更新用户 删除用户 父主题: 数据库权限
  • 更多操作 采集任务创建完成后,您还可以执行如表3的操作。 表3 相关操作 操作 说明 查看采集任务详情 在任务列表中,单击采集任务名称,可查看采集任务的名称、描述、数据源、适配器、命名空间、开始执行时间、执行周期等信息。 停止采集任务 在任务列表中找到需要立即停止的任务,单击“操作”栏中的“停止”即可立即停止此采集任务。 编辑采集任务 在任务列表中找到需要编辑的任务,单击“操作”栏中的“编辑”修改采集任务。其中,数据源和适配器不支持修改。 查看采集任务日志 在任务列表中找到需要查看日志的任务,单击“操作”栏中的“日志”可查看此任务的日志信息。日志信息主要包含运行实例编号、状态、调度开始和调度结束时间以及耗时间。
  • 变量定义 输入参数 用户配置初始化变量执行动作,相关参数说明请参考初始化变量输入参数说明。 表5 变量定义参数说明 参数 是否必选 说明 示例 变量名 是 用于指定将要命名的变量的名称。 re 类型 是 变量的类型。目前包含字符串、整数、布尔、浮点数、数组、对象。 字符串 整数 布尔 浮点数 数组 对象 值 否 用于指定该变量的值。 这是一句话 12345 true 3.1415 [1,2,3,4,5] {"key":"value"} 输出参数 该执行动作无输出参数。
  • 变量赋值 使用变量赋值前需进行变量的定义,即在“初始化变量”动作定义完成后,变量赋值的侧边栏参数“变量名”的下拉列表中才能选取到参数。在变量名的最右侧会展示变量的类型。 输入参数 用户配置变量赋值执行动作,相关参数说明请参考变量赋值输入参数说明。 表6 变量赋值输入参数说明 参数 说明 变量名 选择参数类型(暂无数据)。 值 设定参数的预设值。通过填入值,实现对该参数值的改动。 输出参数 该执行动作无输出参数。
共100000条