当前位置: 首页 > 知识库问答 >
问题:

无法从springboot应用程序验证mongodb

汝昀
2023-03-14

我正在使用Spring引导应用程序连接MongoDB实例。我们已在MongoDB上启用了以下角色的身份验证

角色:[ { role: "dbOwner ",db: "{{ mongo.database_name }}" }

角色:[ { role: "readWrite ",db: "{{ mongo.database_name }}" }

我们使用conf文件提供凭证

数据

mongodb。uri:mongodb://127.0.0.1/testDB

mongodb.authentication数据库

mongodb.username: 'admin'

mongodb.password:'admin'

repositories.enabled: true

在引导应用程序时,我们正在插入特定集合。但是,在插入过程中,它尝试创建索引并失败,并出现以下异常

org.springframework.data.mongodb.UncategorizedMongoDbException:{"server用过":"localhost:27017","ok": 0.0,"errmsg":"在testDB上未授权执行命令{createIndex:\"ws.city\",索引:[{name:\"code\", ns:\"testDB.ws.city\",唯一: true, key:{code: 1 } } ] }" , "code": 13};

完整堆栈跟踪:

通过类型为[XYZRepository]的索引为0的构造函数参数表示的不满意的依赖项:创建名为“XYZRepository”的bean时出错:调用init方法失败;嵌套异常为org . spring framework . data . MongoDB . uncategorizedmongodbexception:{ " server used ":" localhost:27017 "," ok" : 0.0," errmsg ":"未授权在testDB上执行命令{ createIndexes: \"ws.city\ ",indexes: [ { name: \"code\ ",ns: \"testDB.ws.city\ ",unique: true,key:{ code:1 } } } ",code ":13 };嵌套异常为com . MongoDB . commandfailurexception:{ " server used ":" localhost:27017 "," ok" : 0.0," errmsg ":"未授权在testDB上执行命令{ createIndexes: \"ws.city\ ",索引:[ { name: \"code\ ",ns: \"testDB.ws.city\ ",unique: true,key: { code: 1 } } ] }," code ":13 };嵌套异常为org . spring framework . beans . factory . beancreationexception:创建名为“XYZRepository”的bean时出错:调用init方法失败;嵌套异常为org . spring framework . data . MongoDB . uncategorizedmongodbexception:{ " server used ":" localhost:27017 "," ok" : 0.0," errmsg ":"未授权在testDB上执行命令{ createIndexes: \"ws.city\ ",indexes: [ { name: \"code\ ",ns: \"testDB.ws.city\ ",unique: true,key:{ code:1 } } } ",code ":13 };嵌套异常为com . MongoDB . commandfailurexception:{ " server used ":" localhost:27017 "," ok" : 0.0," errmsg ":"未授权在testDB上执行命令{ createIndexes: \"ws.city\ ",indexes: [ { name: \"code\ ",ns: \"testDB.ws.city\ ",unique: true,key: { code: 1 } } ] }," code ":13 } at org . spring framework . beans . factory . support . constructore solver . createargumentarray(constructore solver . Java:70

理想情况下,我理解应用程序与mongoDB交互所需的角色应该是“readWrit”。

>

  • 它期待一个不同的角色吗?
  • Spring在插入时是否尝试自动创建索引并且需要更高/不同的角色?

    在这种情况下我们遗漏了什么?

    我们使用的是mongoDB最新版本:3.2.4 Springboot 1.3.1

  • 共有2个答案

    周超英
    2023-03-14

    这个答案对我很有用,因为我是一个独立的mongo,请参阅文档,作为一个实施访问控制的独立软件。

    mongodb://myDBReader:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
    
    崔单弓
    2023-03-14

    尝试将身份验证数据库更改为 testdb,如 mongodb.authentication-database: testDB

     类似资料:
    • 它说要使用以下命令: 在Google Shell中,我尝试了以下操作: 我知道命令指向的是正确的文件位置。如何成功验证应用程序默认凭据?

    • 这并不困难,但它让我质疑spring auth服务器是最好的选择,还是我应该使用Keycloak?

    • 尝试使用主连接字符串和用户名(数据库名)连接到cosmosdb Mongo API 原因:com.mongodb.mongotieoutexception:在等待与com.mongodb.client.internal.mongoclientdelegate$1@3C291AAD匹配的服务器时,在30000 ms后超时。群集状态的客户端视图是{type=replica_set,servers=[{

    • 我正在研究React应用程序与KeyCloak的集成。我已经在本地计算机上安装了keycloak服务器版本11.0.2。我能够访问管理登录并创建管理用户。我还使用keycloak创建了一个具有凭据的自定义客户端和用户。我的react应用程序是在我的机器的端口9000上托管的,而keycloak是在8080(默认)端口上托管的。现在,当我重定向到我的应用程序URL时,它会自动重定向到下面的URL:

    • 我的程序编译了所有内容,我没有出错,但我实际上期望tomcat应该永久在端口8080上。输出中也没有Spring。在另一个项目中,我做的一切都很好。谢谢你帮助我。 我的父母: 我的tarter.class: 我的Starter-Pom: 控制台输出: 然后什么都不会发生了。谢谢你的帮助。

    • 我的应用/构建。格雷德尔: 在调试模式下,我成功地完成了auth。由Firebase授权。 输入电话号码 好的。工作正常。 但当我想在发布模式下执行此操作时,我会遇到下一个错误: