微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

neo4j 密码外壳和浏览器连接正常,但 golang 客户端连接不工作

如何解决neo4j 密码外壳和浏览器连接正常,但 golang 客户端连接不工作

我在我的 neo4j 服务器上禁用了身份验证,因此我可以使用密码 shell 进行连接,无需凭据,如下所示并且正在工作。

$ ./bin/cypher-shell -a 192.168.0.89

这就是我声明我的驱动程序和会话的方式,我也尝试使用 neo4j://* 而不是 bolt://*:

driver,err := neo4j.NewDriver("bolt://192.168.0.89:7687",neo4j.NoAuth())
if err != nil {
    return "",err
}
defer driver.Close()

session,_ := driver.NewSession(neo4j.SessionConfig{AccessMode: neo4j.AccessModeWrite})
defer session.Close()

但这也行不通。从 neo4j olang 驱动程序页面 https://neo4j.com/developer/go/

运行 hello world 时出现此错误
TLS error: Remote end closed the connection,check that TLS is enabled on the server

有服务器启动时的日志:

2021-03-07 23:17:23.227+0000 INFO  ======== Neo4j 4.2.3 ========
2021-03-07 23:17:24.119+0000 INFO  Performing postinitialization step for component 'security-users' with version 2 and status CURRENT
2021-03-07 23:17:24.119+0000 INFO  Updating the initial password in component 'security-users'  
2021-03-07 23:17:24.243+0000 INFO  Bolt enabled on 192.168.0.89:7687.
2021-03-07 23:17:25.139+0000 INFO  Remote interface available at http://192.168.0.89:7474/
2021-03-07 23:17:25.140+0000 INFO  Started.

这些是我所有的配置设置:

dbms.connector.bolt.advertised_address=192.168.0.89:7687
dbms.connector.bolt.enabled=true                                                                
dbms.connector.bolt.listen_address=192.168.0.89:7687                                                                
dbms.connector.bolt.tls_level=disABLED                                                                
dbms.connector.http.advertised_address=192.168.0.89:7474
dbms.connector.http.enabled=true                                                 
dbms.connector.http.listen_address=192.168.0.89:7474                                                               
dbms.connector.https.enabled=false                                                             
dbms.default_advertised_address=192.168.0.89
dbms.default_database=neo4j                                                               
dbms.default_listen_address=192.168.0.89                                                      
dbms.directories.import=/home/eduardo/NEO4J/import                                                       
dbms.directories.neo4j_home=/home/eduardo/NEO4J
dbms.jvm.additional=-Dlog4j2.disable.jmx=true
dbms.security.auth_enabled=false
dbms.tx_log.rotation.retention_policy=1 days                                                          
dbms.tx_state.memory_allocation=ON_HEAP
dbms.windows_service_name=neo4j

同样,我可以连接到同一台主机并且浏览器也工作正常:

enter image description here

在此先感谢您的帮助:)

解决方法

补充您的答案:您很可能正在使用 Go 驱动程序的 v1.x。如果您改用 v4.x 驱动程序,则不必指定此配置值。

您只需在导入语句中添加 v4 即可升级,如下所示:

import github.com/neo4j/neo4j-go-driver/v4/neo4j

更多信息:https://github.com/neo4j/neo4j-go-driver/blob/4.2/MIGRATIONGUIDE.md

,

对于寻找答案的任何人,默认情况下,bolt 驱动程序将尝试使用 TLS,并且由于在我的情况下未配置,因此需要在驱动程序构造函数调用中禁用加密。

driver,err := neo4j.NewDriver("bolt://192.168.0.89:7687",neo4j.NoAuth(),func(c *neo4j.Config) { c.Encrypted = false })

希望这能帮助其他遇到同样问题的人:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。