Spring Boot整合Hibernate OGM操作MongoDB时persistence.xml认证库不匹配问题
问题根因
你的猜测完全正确,报错的核心原因是:
- 你创建的
test用户归属的认证数据库是TestDB,但Hibernate OGM默认使用admin库作为MongoDB的身份认证源,因此认证请求发错了库导致验证失败。 - 之前使用
useradmin账号时没有认证报错,是因为这个用户本身就是创建在admin库下,刚好匹配默认的认证源,只是该账号没有TestDB的读写权限所以后续操作报错。
修复方案
在你的persistence.xml的properties节点下,新增指定认证数据库的配置项即可:
<property name="hibernate.ogm.mongodb.authentication_database" value="TestDB" />
修改后的完整properties配置如下:
<properties> <property name="hibernate.ogm.datastore.provider" value="MONGODB" /> <property name="hibernate.ogm.datastore.database" value="TestDB" /> <property name="hibernate.ogm.datastore.create_database" value="true" /> <property name="hibernate.ogm.datastore.host" value="127.0.0.1" /> <property name="hibernate.ogm.datastore.port" value="27017" /> <property name="hibernate.ogm.datastore.username" value="test"/> <property name="hibernate.ogm.datastore.password" value="test123"/> <!-- 新增指定认证数据库 --> <property name="hibernate.ogm.mongodb.authentication_database" value="TestDB" /> </properties>
额外注意事项
你粘贴的创建useradmin用户的代码中,pwd: "password, 漏写了结尾的双引号,若这是你实际创建用户时的错误需要修正,只是粘贴笔误可忽略。
内容的提问来源于stack exchange,提问作者KilledByCheese
相关产品推荐
相关产品推荐

