сервер повернув помилку на етапі автентифікації SASL: Помилка автентифікації


76

Далі - мій циферблат для підключення MongoDB від GoLang. Але він повертає паніку " Сервер повернув помилку на етапі автентифікації SASL: Помилка автентифікації. ". Моє ім’я користувача, пароль, hostAddrs та dbName правильні. Чого мені тут не вистачає?

dbName: = os.Getenv("ENV_DBNAME")
userName: = os.Getenv("ENV_DBUSER")
password: = os.Getenv("ENV_DBPASS")
dbHost: = os.Getenv("ENV_DBHOST")
mongoDialInfo: = & mgo.DialInfo {
 Addrs: [] string {
  dbHost
 },
 Database: dbName,
 Username: userName,
 Password: password,
 Timeout: 60 * time.Second,
}
sess, err: = mgo.DialWithInfo(mongoDialInfo)
if (err != nil) {
 panic(err)

}

Відповіді:


165

Я зіткнувся з подібною помилкою та додав --authenticationDatabaseпараметр, і він працював під час підключення до віддаленого MongoDB

Використовуйте у своєму коді подібний формат нижче:

$mongorestore --host databasehost:98761 --username restoreuser
--password restorepwd --authenticationDatabase admin --db targetdb ./path/to/dump/

1
Дякую, у моєму випадку саме це було рішенням.
Рав,

2
Я розгублений ... що таке параметр --authenticationDatabase? ім'я бази даних, до якої ви хочете отримати доступ?
vabm

1
У моєму випадку я мав доступ лише до однієї дБ на сервері. Тому мені потрібно було просто додати -d <dbname>опцію. Не потрібно --authenticationDatabaseмені
alaster

Це правильна порада, але в моєму паролі був знак «%», і в скрипті cmd.exe знак зник. У мене була та ж помилка =)
Pax Beach

Я маю ';' в моєму паролі!
Бруно Фернандес,

15

Часто ми плутаємо з параметром у команді mongoexport із користувачем "Вхід". Команда очікує "Ім'я користувача бази даних", а не ім'я користувача для входу. Це одна можливість ввести неправильне ім’я користувача. "Ім'я користувача бази даних" можна знайти на вкладці "Користувачі" для бази даних


2
У моєму випадку я використовував свій пароль mLab замість пароля db. Дурна помилка, але ця відповідь допомогла мені це зрозуміти!
ahaurat

8

Я отримав свою відповідь за цим посиланням: https://newbiedba.wordpress.com/2016/11/21/mongodb-3-2-server-returned-error-on-sasl-authentication-step-authentication-failed/

За винятком усіх наведених вище відповідей, єдиною не згадуваною причиною є те, що в моєму паролі є спеціальний символ '$'. Я думаю, що це дуже поширена практика мати спеціальних персонажів, і це може спонукати багатьох без цієї простої підказки:

При використанні командного рядка mongo / mongostat / і т. Д. Вкажіть своє ім’я користувача чи пароль, які мають спеціальні символи!


Саме моя проблема. Дякую.
Zach B.

tl; dr "Щоб вирішити проблему, просто вкажіть поле пароля." напр. -p 'пароль'
Андрій Радулеску

Дякую, у мене виникла &проблема
Джек,

4

mgoповертає цю помилку , якщо username, passwordабо databaseневірні. Перевірте свої дані двічі. Немає інших ситуацій, коли ви бачите Authentication failedповідомлення про помилку.


сервер повернув помилку на етапі автентифікації SASL: Помилка автентифікації. панікуйте: Помилка виконання: неприпустимий адресу пам'яті або нуль покажчик разименованія паніку: Помилка виконання: неприпустимий адресу пам'яті або нуль покажчика разименованія
Арджун Ajith

1
Так, це правильний спосіб реалізації підключення. Ось робочий код gist.github.com/bearburger/718dec31746762684a7a512aed992a37, який підключає демонстраційну БД.
CrazyCrow

1

Помилка, про яку ви повідомляєте, здається причиною помилки автентифікації, спричинена нульовим покажчиком, перед тим, як використовувати їх для створення з'єднання, слід перевірити дані.


2
Я не знаю, як виборці зрозуміли вас, але я впевнений, що нічого не зрозумів з вашої відповіді. Розум детальніше розробляти ...?
rrw

Ну, після більш ніж 1 року я точно не знаю, про що думав. Можливо, моя ідея полягала в тому, що програма Golang не може отримати один або кілька env_variable від хоста.
Bestbug

1

Я отримав цю помилку під час використання рядка підключення з програми Heroku за допомогою --uriпрапора. У моєму випадку це вирішило додавання імені бази даних за допомогою -d:

mongodb_uri="$(heroku config:get MONGODB_URI -a myapp)"
mongorestore --uri=$mongodb_uri -d heroku_7m41q4xs db/

0

У мене була та ж помилка під час використання з dokku mongo: import. У моєму випадку я включив крапку (крапку) до свого імені db

Ви не повинні включати крапку у своє ім'я mongodb, коли 'dokku mongo: create' Я змінив її на seunghunlee замість seunghunlee.net, тепер ця команда працює

dokku mongo:import seunghunlee < seunghunlee.net.dump.gz

Сподіваюся, це допоможе!


0

У моєму випадку мені не вистачало обох --authenticationDatabase & --ssl, тому тут йде повний синтаксис для імпорту json-файлу в колекцію Mongodb через кластер Atlas (у основний осколок):

./mongoimport --host mycluster-shard-00-02.d0b2r.mongodb.net:27017 --authenticationDatabase admin --username TestUser --db Test --collection Messages --type json --file RAW.json --ssl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.