以下は、GoLangからの私のMongoDB接続ダイヤルです。しかし、パニックを返しています "サーバーは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)
}
同様のエラーに直面し、--authenticationDatabase
パラメーターを追加しましたが、リモートMongoDBに接続しているときに機能しました
コードで以下のような形式を使用します。
$mongorestore --Host databasehost:98761 --username restoreuser
--password restorepwd --authenticationDatabase admin --db targetdb ./path/to/dump/
多くの場合、mongoexportコマンドのパラメーターと「ログイン」ユーザーと混同しました。このコマンドでは、ログインユーザー名ではなく「データベースユーザー名」が必要です。これは、間違ったユーザー名を入力する可能性の1つです。 「データベースユーザー名」は、データベースの「ユーザー」タブにあります。
mgo
、username
、またはpassword
が間違っている場合、database
はこのエラーを返します。資格情報を2回確認します。 Authentication failed
エラーメッセージが表示される状況は他にありません。
このリンクから回答を得ました: https://newbiedba.wordpress.com/2016/11/21/mongodb-3-2-server-returned-error-on-sasl-authentication-step-authentication-失敗/
上記のすべての回答を除き、言及されていない唯一の理由は、パスワードに特殊文字「$」が含まれていることです。これは特殊文字を使用する非常に一般的な慣行であり、この簡単なヒントなしで多くのことをトリップする可能性があると思います:
コマンドラインmongo/mongostat/etc。を使用する場合。特殊文字を含むユーザー名またはパスワードを一重引用符で囲みます。
あなたが報告するエラーは認証失敗の原因がnilポインタによって引き起こされているようです。接続を作成するためにそれらを使用する前にデータを確認する必要があります
Dokku mongo:importで使用すると同じエラーが発生しました。私の場合、db名にdot(period)を含めました
'dokku mongo:create'の場合、mongodb名にドットを含めないでください。seunghunlee.netではなくseunghunlee.netに変更しました。このコマンドは機能します。
dokku mongo:import seunghunlee < seunghunlee.net.dump.gz
それが役に立てば幸い!