如何配置MongoDB只读连接字符串URI?添加readOnly=true无效
MongoDB只读连接字符串正确配置方法
你之前用的readOnly=true无效,是因为MongoDB官方连接字符串参数里根本没有这个选项,得换正确的配置方式:
第一步:先给数据库用户配置只读权限
这是核心前提,光靠连接字符串参数限制不了写操作,必须给用户分配只读角色。比如在Mongo Shell里执行:db.grantRolesToUser("你的只读用户名", [{ role: "read", db: "目标数据库名" }])如果需要访问所有数据库,就把
role换成readAnyDatabase。第二步:连接字符串里配置读偏好
如果你的MongoDB是副本集/分片集群,可以通过readPreference指定从只读节点读取,可选值:secondary:强制从从节点读,没有可用从节点时会报错secondaryPreferred:优先从从节点读,没有可用从节点时自动 fallback 到主节点
示例连接字符串:
mongodb://只读用户名:密码@host1:27017,host2:27017/目标数据库名?readPreference=secondaryPreferred可选:配置读关注点(保证数据一致性)
如果需要确保读取的是已提交的稳定数据,可加上readConcernLevel=majority:mongodb://只读用户名:密码@host1:27017,host2:27017/目标数据库名?readPreference=secondaryPreferred&readConcernLevel=majority
注意:如果是单节点MongoDB部署,读偏好参数不会生效,只能靠用户权限限制只读。
内容的提问来源于stack exchange,提问作者Holmes
相关产品推荐
相关产品推荐

