如何解决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
同样,我可以连接到同一台主机并且浏览器也工作正常: 在此先感谢您的帮助:)
解决方法
补充您的答案:您很可能正在使用 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 举报,一经查实,本站将立刻删除。