2016-06-25 11 views
2

Я пытаюсь подключиться к базе данных mlab mongo в своем приложении Golang, но я всегда получаю «auth failed».Не могу соединиться с базой данных Mlab, но я могу на свое местное монго с помощью mgo golang

Если я использую мое местное Монго, у меня нет никаких проблем (мои местный не имеет аутентификации)

EDIT: Я создал базу данных пользователей в MLAB и я могу войти с этим пользователем в RoboMongo

Мой пакет базы данных выглядит следующим образом:

package database 

import (
    "os" 
    "fmt" 
    "sync" 
    "labix.org/v2/mgo" 
    "time" 
) 

type DB struct { 
    Database *mgo.Database 
} 


const (
    MongoDBHosts = "mlabHost:mlabPort" 
    AuthDatabase = "mydatabase" 
    AuthUserName = "mlabUser" 
    AuthPassword = "mlabPassword" 
) 

var _init_ctx sync.Once 
var _instance *DB 

func New() *mgo.Database { 
    _init_ctx.Do(func() { 
     _instance = new(DB) 

     mongoDBDialInfo := &mgo.DialInfo{ 
      Addrs: []string{MongoDBHosts}, 
      Timeout: 600 * time.Second, 
      Database: AuthDatabase, 
      Username: AuthUserName, 
      Password: AuthPassword, 
     } 

     // Create a session which maintains a pool of socket connections 
     // to our MongoDB. 
     session, err := mgo.DialWithInfo(mongoDBDialInfo) 

     if err != nil { 
      fmt.Printf("Error en mongo: %+v\n", err) 
      os.Exit(1) 
     } 
     _instance.Database = session.DB(AuthDatabase) 
    }) 
    return _instance.Database 
} 

с этим кодом, я всегда получаю «Ошибка аутентификации», но если я изменить константные значения для подключения к местной так:

const (
    MongoDBHosts = "localhost:27017" 
    AuthDatabase = "mydatabase" 
    AuthUserName = "" 
    AuthPassword = "" 
) 

Все хорошо.

Я даже могу подключиться к базе данных MLAB через RoboMongo, но одна вещь, которую я заметил, что пытается подключиться из командной строки, как это:

mongo mLabHost:mLabPort/mydatabase -u mLabUser -p mLabPassword 

Стремительное переспрашивает пароля, а затем я получаю (мойпароль = mLabPassword вхожу):

2016-06-25T16:07:10.822-0500 E -  [main] file [mypassword] doesn't exist 
failed to load: mypassword 

Я попытался подключиться к MLAB несколько различных способов, но я не могу найти то, что моя проблема.

Благодаря

+0

Возможная Дубликат [Golang и MongoDB дистанционного управления Ошибка доступа (ошибка ответа сервера на этапе аутентификации SASL: Ошибка аутентификации.)] (http://stackoverflow.com/questions/35635293/golang-and-mongodb-remote-acces s-fail-server-received-error-on-sasl-authenticat) – Tinwor

+0

В этом вопросе ответы оказались пользователями, которые не создали пользователя базы данных mLab, но у меня есть один, который я поставил в моей строке подключения – codiaf

ответ

5

Нашли проблему

Я импортировал неправильный модуль идти.

Я имел:

labix.org/v2/mgo 

вместо:

gopkg.in/mgo.v2 

После импорта gopkg.in/mgo.v2 он сделал соединение

 Смежные вопросы

  • Нет связанных вопросов^_^