使用 Go mgo 连接到 MongoDB Atlas:解决“无法访问服务器”问题
尝试使用以下方式连接到 MongoDB Atlas 副本集时Go 的 mgo 驱动程序,您可能会遇到持续错误“无法访问服务器”。即使您可以使用相同的连接字符串成功连接其他语言,也可能会出现此问题。
此问题的根本原因通常在于 SSL 连接参数配置缺失或不正确。要与 MongoDB Atlas 建立安全连接,您必须使用 TLS 配置。下面的代码片段演示了如何配置 SSL 连接:
package main import ( "gopkg.in/mgo.v2" "crypto/tls" "net" ) func main() { tlsConfig := &tls.Config{} dialInfo := &mgo.DialInfo{ Addrs: []string{"prefix1.mongodb.net:27017", "prefix2.mongodb.net:27017", "prefix3.mongodb.net:27017"}, Database: "authDatabaseName", Username: "user", Password: "pass", } dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) { conn, err := tls.Dial("tcp", addr.String(), tlsConfig) return conn, err } session, err := mgo.DialWithInfo(dialInfo) if err != nil { // Handle error } // Use the session to interact with MongoDB Atlas }
替代解决方案:
另一个选项是使用 ParseURL 方法来解析 MongoDB Atlas URI 字符串。但是,此方法当前不支持 SSL (mgo.V2 PR:304)。解决方法是在解析之前从 URI 中删除“ssl=true”行。
// URI without ssl=true mongoURI := "mongodb://username:[email protected],prefix2.mongodb.net,prefix3.mongodb.net/dbName?replicaSet=replName&authSource=admin" dialInfo, err := mgo.ParseURL(mongoURI) // Below part is similar to the previous example. // ... (remainder of code)
通过执行以下步骤,您可以使用 mgo 驱动程序成功连接到 MongoDB Atlas 并解决“无法访问服务器”的问题“问题。
以上是如何解决使用 Go 的 mgo 驱动连接 MongoDB Atlas 时出现'No Reachable Server”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!