MongoDB连接报错

落日映苍穹つ 2024-04-18 07:36 205阅读 0赞

MongoDB 启动报错,连接异常:mechanism=SCRAM-SHA-1

  1. org.springframework.data.mongodb.UncategorizedMongoDbException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='tan', source='db',
  2. password=<hidden>, mechanismProperties={}}; nested exception is com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1,
  3. userName='tan', source='db', password=<hidden>, mechanismProperties={}}
  4. at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:138)
  5. at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2781)
  6. at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:547)
  7. at org.springframework.data.mongodb.core.MongoTemplate.doRemove(MongoTemplate.java:1689)
  8. at org.springframework.data.mongodb.core.MongoTemplate.remove(MongoTemplate.java:1677)
  9. at org.springframework.data.mongodb.core.MongoTemplate.remove(MongoTemplate.java:1670)
  10. at com.zhan.db.schedule.CheckAPISchedule.execute(CheckAPISchedule.java:85)
  11. at com.zhan.db.schedule.CheckAPISchedule.autoCheck(CheckAPISchedule.java:72)
  12. at com.zhan.db.schedule.CheckAPISchedule$$FastClassBySpringCGLIB$$b9ae1eee.invoke(<generated>)
  13. at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
  14. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
  15. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
  16. at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
  17. at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
  18. at java.util.concurrent.FutureTask.run(FutureTask.java)
  19. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  20. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  21. at java.lang.Thread.run(Thread.java:748)
  22. Caused by: com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='tan', source='db', password=<hidden>,
  23. mechanismProperties={}}
  24. at com.mongodb.internal.connection.SaslAuthenticator.wrapException(SaslAuthenticator.java:173)
  25. at com.mongodb.internal.connection.SaslAuthenticator.access$300(SaslAuthenticator.java:40)
  26. at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:70)
  27. at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:47)
  28. at com.mongodb.internal.connection.SaslAuthenticator.doAsSubject(SaslAuthenticator.java:179)
  29. at com.mongodb.internal.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java:47)
  30. at com.mongodb.internal.connection.InternalStreamConnectionInitializer.authenticateAll(InternalStreamConnectionInitializer.java:151)
  31. at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:64)
  32. at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:127)
  33. at com.mongodb.internal.connection.UsageTrackingInternalConnection.open(UsageTrackingInternalConnection.java:50)
  34. at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.open(DefaultConnectionPool.java:390)
  35. at com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java:106)
  36. at com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java:92)
  37. at com.mongodb.internal.connection.DefaultServer.getConnection(DefaultServer.java:85)
  38. at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.getConnection(ClusterBinding.java:114)
  39. at com.mongodb.operation.OperationHelper.withReleasableConnection(OperationHelper.java:424)
  40. at com.mongodb.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:191)
  41. at com.mongodb.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:67)
  42. at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:193)
  43. at com.mongodb.client.internal.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:960)
  44. at com.mongodb.client.internal.MongoCollectionImpl.executeDelete(MongoCollectionImpl.java:940)
  45. at com.mongodb.client.internal.MongoCollectionImpl.deleteMany(MongoCollectionImpl.java:551)
  46. at org.springframework.data.mongodb.core.MongoTemplate$9.doInCollection(MongoTemplate.java:1729)
  47. at org.springframework.data.mongodb.core.MongoTemplate$9.doInCollection(MongoTemplate.java:1689)
  48. at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:545)
  49. ... 15 more
  50. Caused by: com.mongodb.MongoCommandException: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server 192.168.31.36:27017. The full
  51. response is { "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" }
  52. at com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:179)
  53. at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:293)
  54. at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:255)
  55. at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83)
  56. at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33)
  57. at com.mongodb.internal.connection.SaslAuthenticator.sendSaslStart(SaslAuthenticator.java:130)
  58. at com.mongodb.internal.connection.SaslAuthenticator.access$100(SaslAuthenticator.java:40)
  59. at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:54)
  60. ... 37 more
  61. org.springframework.data.mongodb.UncategorizedMongoDbException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='tan', source='db',
  62. password=<hidden>, mechanismProperties={}}; nested exception is com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1,
  63. userName='tan', source='db', password=<hidden>, mechanismProperties={}}
  64. at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:138)
  65. at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2781)
  66. at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:547)
  67. at org.springframework.data.mongodb.core.MongoTemplate.doRemove(MongoTemplate.java:1689)
  68. at org.springframework.data.mongodb.core.MongoTemplate.remove(MongoTemplate.java:1677)
  69. at org.springframework.data.mongodb.core.MongoTemplate.remove(MongoTemplate.java:1670)
  70. at com.zhan.db.schedule.HiveSynchStatsSchedule.statistics(HiveSynchStatsSchedule.java:59)
  71. at com.zhan.db.schedule.HiveSynchStatsSchedule$$FastClassBySpringCGLIB$$c58d6a3e.invoke(<generated>)
  72. at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
  73. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
  74. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
  75. at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
  76. at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
  77. at java.util.concurrent.FutureTask.run(FutureTask.java)
  78. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  79. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  80. at java.lang.Thread.run(Thread.java:748)
  81. Caused by: com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='tan', source='db', password=<hidden>,
  82. mechanismProperties={}}
  83. at com.mongodb.internal.connection.SaslAuthenticator.wrapException(SaslAuthenticator.java:173)
  84. at com.mongodb.internal.connection.SaslAuthenticator.access$300(SaslAuthenticator.java:40)
  85. at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:70)
  86. at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:47)
  87. at com.mongodb.internal.connection.SaslAuthenticator.doAsSubject(SaslAuthenticator.java:179)
  88. at com.mongodb.internal.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java:47)
  89. at com.mongodb.internal.connection.InternalStreamConnectionInitializer.authenticateAll(InternalStreamConnectionInitializer.java:151)
  90. at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:64)
  91. at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:127)
  92. at com.mongodb.internal.connection.UsageTrackingInternalConnection.open(UsageTrackingInternalConnection.java:50)
  93. at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.open(DefaultConnectionPool.java:390)
  94. at com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java:106)
  95. at com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java:92)
  96. at com.mongodb.internal.connection.DefaultServer.getConnection(DefaultServer.java:85)
  97. at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.getConnection(ClusterBinding.java:114)
  98. at com.mongodb.operation.OperationHelper.withReleasableConnection(OperationHelper.java:424)
  99. at com.mongodb.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:191)
  100. at com.mongodb.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:67)
  101. at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:193)
  102. at com.mongodb.client.internal.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:960)
  103. at com.mongodb.client.internal.MongoCollectionImpl.executeDelete(MongoCollectionImpl.java:940)
  104. at com.mongodb.client.internal.MongoCollectionImpl.deleteMany(MongoCollectionImpl.java:551)
  105. at org.springframework.data.mongodb.core.MongoTemplate$9.doInCollection(MongoTemplate.java:1729)
  106. at org.springframework.data.mongodb.core.MongoTemplate$9.doInCollection(MongoTemplate.java:1689)
  107. at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:545)
  108. ... 14 more
  109. Caused by: com.mongodb.MongoCommandException: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server 192.168.31.36:27017. The full
  110. response is { "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" }
  111. at com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:179)
  112. at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:293)
  113. at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:255)
  114. at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83)
  115. at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33)
  116. at com.mongodb.internal.connection.SaslAuthenticator.sendSaslStart(SaslAuthenticator.java:130)
  117. at com.mongodb.internal.connection.SaslAuthenticator.access$100(SaslAuthenticator.java:40)
  118. at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:54)
  119. ... 36 more
  120. org.springframework.data.mongodb.UncategorizedMongoDbException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='tan', source='db',
  121. password=<hidden>, mechanismProperties={}}; nested exception is com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1,
  122. userName='tan', source='db', password=<hidden>, mechanismProperties={}}
  123. at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:138)
  124. at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2781)
  125. at org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:2636)
  126. at org.springframework.data.mongodb.core.MongoTemplate.doFindOne(MongoTemplate.java:2360)
  127. at org.springframework.data.mongodb.core.MongoTemplate.findById(MongoTemplate.java:850)
  128. at org.springframework.data.mongodb.core.MongoTemplate.findById(MongoTemplate.java:837)
  129. at com.zhan.db.schedule.CalculateDelaySchedule.calculate(CalculateDelaySchedule.java:108)
  130. at com.zhan.db.schedule.CalculateDelaySchedule.calculateDelay(CalculateDelaySchedule.java:90)
  131. at com.zhan.db.schedule.CalculateDelaySchedule$$FastClassBySpringCGLIB$$49b6f5f9.invoke(<generated>)
  132. at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
  133. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
  134. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
  135. at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
  136. at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
  137. at java.util.concurrent.FutureTask.run(FutureTask.java)
  138. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  139. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  140. at java.lang.Thread.run(Thread.java:748)
  141. Caused by: com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='tan', source='db', password=<hidden>,
  142. mechanismProperties={}}
  143. at com.mongodb.internal.connection.SaslAuthenticator.wrapException(SaslAuthenticator.java:173)
  144. at com.mongodb.internal.connection.SaslAuthenticator.access$300(SaslAuthenticator.java:40)
  145. at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:70)
  146. at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:47)
  147. at com.mongodb.internal.connection.SaslAuthenticator.doAsSubject(SaslAuthenticator.java:179)
  148. at com.mongodb.internal.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java:47)
  149. at com.mongodb.internal.connection.InternalStreamConnectionInitializer.authenticateAll(InternalStreamConnectionInitializer.java:151)
  150. at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:64)
  151. at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:127)
  152. at com.mongodb.internal.connection.UsageTrackingInternalConnection.open(UsageTrackingInternalConnection.java:50)
  153. at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.open(DefaultConnectionPool.java:390)
  154. at com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java:106)
  155. at com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java:92)
  156. at com.mongodb.internal.connection.DefaultServer.getConnection(DefaultServer.java:85)
  157. at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.getConnection(ClusterBinding.java:114)
  158. at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:460)
  159. at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:406)
  160. at com.mongodb.operation.FindOperation.execute(FindOperation.java:695)
  161. at com.mongodb.operation.FindOperation.execute(FindOperation.java:83)
  162. at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:179)
  163. at com.mongodb.client.internal.FindIterableImpl.first(FindIterableImpl.java:198)
  164. at org.springframework.data.mongodb.core.MongoTemplate$FindOneCallback.doInCollection(MongoTemplate.java:2820)
  165. at org.springframework.data.mongodb.core.MongoTemplate$FindOneCallback.doInCollection(MongoTemplate.java:2795)
  166. at org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:2633)
  167. ... 15 more
  168. Caused by: com.mongodb.MongoCommandException: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server 192.168.31.36:27017. The full
  169. response is { "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" }
  170. at com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:179)
  171. at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:293)
  172. at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:255)
  173. at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83)
  174. at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33)
  175. at com.mongodb.internal.connection.SaslAuthenticator.sendSaslStart(SaslAuthenticator.java:130)
  176. at com.mongodb.internal.connection.SaslAuthenticator.access$100(SaslAuthenticator.java:40)
  177. at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:54)
  178. ... 36 more

解决:连接 url加上 ?authSource=admin&authMechanism=SCRAM-SHA-1

  1. @Bean
  2. public MongoDbFactory secondaryFactory(MongoProperties mongo) throws Exception {
  3. if (StringUtils.isEmpty(mongo.getUsername()) || mongo.getPassword() == null ) {
  4. return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()),
  5. mongo.getDatabase());
  6. } else {
  7. String password = String.valueOf(mongo.getPassword());
  8. String url = "mongodb://" + mongo.getUsername()
  9. + ":" + password
  10. + "@" + mongo.getHost() + ":" + mongo.getPort() + "/" + mongo.getDatabase()
  11. + "?authSource=admin&authMechanism=SCRAM-SHA-1";
  12. return new SimpleMongoDbFactory(new MongoClientURI(url));
  13. }
  14. }

详细例子请看 : Spring Boot 多个MongoDB 数据源配置与实现

-

-

-

- 完毕

发表评论

表情:
评论列表 (有 0 条评论,205人围观)

还没有评论,来说两句吧...

相关阅读