我正在尝试使用mgo库从Go连接到远程MongoDB数据库(Mongolab),但出现错误panic: server returned error on SASL authentication step: Authentication failed。这是我的代码
panic: server returned error on SASL authentication step: Authentication failed
package main import ( "fmt" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" "log" ) type Person struct { Name string Phone string } func main() { session, err := mgo.Dial("mongodb://<dbusername>:<dbpassword>@ds055855.mlab.com:55855") if err != nil { panic(err) } defer session.Close() // Optional. Switch the session to a monotonic behavior. session.SetMode(mgo.Monotonic, true) c := session.DB("catalog").C("History") err = c.Insert(&Person{"Ale", "+55 53 8116 9639"}, &Person{"Cla", "+55 53 8402 8510"}) if err != nil { log.Fatal(err) } result := Person{} err = c.Find(bson.M{"name": "Ale"}).One(&result) if err != nil { log.Fatal(err) } fmt.Println("Phone:", result.Phone) }
我怎样才能解决这个问题?当然,我在代码中使用星号和密码代替星号。
请检查是否为Mongolab数据库实例添加了用户(如果数据库名称为,则为https://mongolab.com/databases/catalog#userscatalog),因为默认情况下,用户列表为空(帐户user / password!=数据库)用户密码)。
catalog
还要/<databasename>在连接字符串末尾添加mongodb://*******:*******@ds045795.mongolab.com:45795/databasename。
/<databasename>
mongodb://*******:*******@ds045795.mongolab.com:45795/databasename