Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Hibernate OGM升级导致Mongo身份验证问题_Mongodb_Hibernate Ogm - Fatal编程技术网

Mongodb Hibernate OGM升级导致Mongo身份验证问题

Mongodb Hibernate OGM升级导致Mongo身份验证问题,mongodb,hibernate-ogm,Mongodb,Hibernate Ogm,我正在尝试使用以下内容升级我的应用程序: Mongo db 2.6.5至3.4.2 将OGM从4.2.0.Final休眠到5.1.0.Final 我在OGM5.1中遇到了身份验证失败的问题,但是在OGM4.2中它可以正常工作 异常堆栈- com.mongodb.MongoSecurityException:验证MongoCredential{mechanism=null,userName='prodhub',source='admin',password=,mechanismProperties

我正在尝试使用以下内容升级我的应用程序:

  • Mongo db 2.6.5至3.4.2
  • 将OGM从4.2.0.Final休眠到5.1.0.Final
  • 我在OGM5.1中遇到了身份验证失败的问题,但是在OGM4.2中它可以正常工作

    异常堆栈-

    com.mongodb.MongoSecurityException:验证MongoCredential{mechanism=null,userName='prodhub',source='admin',password=,mechanismProperties={}的异常 在com.mongodb.connection.SaslAuthenticator.wrapInMongoSecurityException(SaslAuthenticator.java:157)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.SaslAuthenticator.access$200(SaslAuthenticator.java:37)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:66)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:44)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.SaslAuthenticator.doassObject(SaslAuthenticator.java:162)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java:44)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.DefaultAuthenticator.authenticate(DefaultAuthenticator.java:32)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.InternalStreamConnectionInitializer.authenticateAll(InternalStreamConnectionInitializer.java:109)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:46)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:116)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunName.run(DefaultServerMonitor.java:113)~[mongo-java-driver-3.4.2.jar:na] 在java.lang.Thread.run(Thread.java:745)[na:1.8.0_72] 原因:com.mongodb.MongoCommandException:命令失败,错误为18:“身份验证失败”。服务器本地主机:27017。完整响应为{“ok”:0.0,“errmsg”:“身份验证失败”,“code”:18,“codeName”:“AuthenticationFailed”} 在com.mongodb.connection.CommandHelper.createCommandFailureException(CommandHelper.java:170)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.CommandHelper.receiveCommandResult(CommandHelper.java:123)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:32)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.SaslAuthenticator.sendsalstart(SaslAuthenticator.java:117)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.SaslAuthenticator.access$000(SaslAuthenticator.java:37)~[mongo-java-driver-3.4.2.jar:na] 在com.mongodb.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:50)~[mongo-java-driver-3.4.2.jar:na] ... 省略9个公共框架

    我遇到了这个jira-,这表明我可能必须进行mongo身份验证方案迁移

    我的持久性xml是这样的--

    
    org.hibernate.ogm.jpa.hibernateogm持久性
    启用\u选择性
    
    mongo日志显示-

    2017-03-19T01:37:37.352+0530 I网络[thread1]连接已从127.0.0.1:62379#640接受(2个连接现已打开) 2017-03-19T01:37:37.353+0530 I网络[conn640]从127.0.0.1:62379接收到客户端元数据conn640:{驱动程序:{名称:“mongo java驱动程序”,版本:“3.4.2”},操作系统:{类型:“Windows”,名称:“Windows 7”,体系结构:“amd64”,版本:“6.1”},平台:“java/Oracle Corporation/1.8.072-b15”} 2017-03-19T01:37:37.355+0530客户端127.0.0.1:62379对管理员上的prodhub进行I访问[conn640]紧急停堆SHA-1身份验证失败;UserNotFound:找不到用户prodhub@admin 2017-03-19T01:37:37.356+0530 I-[conn640]端部连接127.0.0.1:62379(2个连接现在打开)

    如果将身份验证机制更改为MONGODB_CR,则会收到以下日志消息-

    [conn667]从127.0.0.1:64331接收到客户端元数据conn667:{驱动程序:{名称:“mongo java驱动程序”,版本:“3.4.2”},操作系统:{类型:“Windows”,名称:“Windows 7”,体系结构:“amd64”,版本:“6.1”},平台:“java/Oracle Corporation/1.8.0_72-b15”} 2017-03-19T15:10:33.346+0530 I访问[conn667]身份验证数据库:admin{authenticate:1,用户:“prodhub”,nonce:“xxx”,key:“xxx”} 2017-03-19T15:10:33.347+0530 I访问[conn667]身份验证失败prodhub@admin使用机制MONGODB-CR:AuthenticationFailed:UserNotFound:找不到用户prodhub@admin 2017-03-19T15:10:33.349+0530 I-[conn667]端部连接127.0.0.1:64331(2个连接现在打开)

    从错误堆栈和日志消息中,是否确认我需要执行此处提到的身份验证迁移过程-


    或者在进行升级之前,我应该寻找更多的诊断信息吗?

    我找到了解决方案。根据这个线程的线索,我在“admin”数据库中创建了用户,这似乎是Mongo3.x中的默认身份验证数据库。之前,用户居住在我的“测试”数据库中


    我想,将属性“hibernate.ogm.mongodb.authentication\u database”设置为“test”可能也可以,但我还没有尝试过。

    我找到了解决方案。根据这个线程的线索,我在“admin”数据库中创建了用户,这似乎是Mongo3.x中的默认身份验证数据库。之前,用户居住在我的“测试”数据库中


    我想,将属性“hibernate.ogm.mongodb.authentication\u database”设置为“test”也可能起作用,但我还没有尝试过。

    即使是升级也没有帮助!>adminCommand({authSchemaUpgrade:1});{“完成”:真,“确定”:1}。。还活着吗
    <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
      <persistence-unit name="productHub">
        <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
        <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
    
            <properties>
    
                <property name="hibernate.ogm.datastore.provider" value="mongodb" /> 
    
                <property name="hibernate.ogm.datastore.database" value="test" /> 
                <!-- property name="hibernate.ogm.datastore.host" value="localhost" / --> 
                <!-- property name="hibernate.ogm.datastore.port" value="27017" / -->
                <property name="hibernate.ogm.datastore.username" value="prodhub" /> 
                <property name="hibernate.ogm.datastore.password" value="xxxxxxxxx" />
                <property name="hibernate.ogm.mongodb.connection_timeout" value="6000" />
    
                <!-- property name="hibernate.ogm.mongodb.authentication_mechanism" value="MONGODB_CR" / -->
    
                <property name="hibernate.cache.use_second_level_cache" value="false" />
    
                <!--
                <property name="hibernate.search.default.directory_provider" value="filesystem" />
                <property name="hibernate.search.default.indexBase" value="D:\\Projects\\prodhub\\lucene" />
    
    
                <property name="jboss.as.jpa.managed" value="false" />
                -->
    
            </properties>
    
      </persistence-unit>
    </persistence>