新しいmLabアカウントを作成し、ここの手順に従ってデータベースを作成しました http://docs.mlab.com/#create-sub mongo Shellとmongoose Node.jsモジュールを使用してデータベースに接続しようとしていますが、両方のケースで「認証に失敗しました」エラーが表示されます。
Mongo Shellでは、コマンドは、資格情報を再確認しました
mongo ds012345.mlab.com:56789/dbname -u dbuser -p dbpassword
エラー:
MongoError: authentication fail
at Function.MongoError.create (E:\Gatsby\notmongoose\node_modules\mongodb-core\lib\error.js:31:11)
Mongooseの使用
var mongoose = require('mongoose')
, Admin = mongoose.mongo.Admin;
var uri = '<correct mongo uri here>';
var connection = mongoose.createConnection(uri,
{
User: '<uname>',
Password: '<pwd>'
});
connection.on('open', function() {
console.log('connection established!!!');
new Admin(connection.db).listDatabases(function(err, result) {
console.log('listDatabases succeeded');
console.log(err);
console.log(result);
});
});
エラー:: MongoConnect Error MongoError:authentication fail
MLabコンソールで行う必要のあることや、間違っていることや行方不明になっていることはありますか?
MLabアカウントでデータベースの新しいユーザーを作成し、作成したユーザーでmlabアカウントにログインする必要があります。次に、特定のデータベースをクリックし、ユーザータブをクリックします。下の画像を参照してください。
ここでフォームに入力し、データベースのユーザーを作成します。以下の画像を参照してください。
ここで、コードでは接続に次の文字列を使用します。
var mongoose = require('mongoose');
var mongoDB = "mongodb://<username>:<password>@ds241489.mlab.com:41489/<DB Name>";
mongoose.connect(mongoDB, {
useMongoClient: true
});
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
here で説明したように、この同じ問題に遭遇し、私の場合はクライアントバージョンの互換性の問題でした。
MLab mongoデータベースはバージョン3.4.9でしたが、公式のUbunty Xenialリポジトリから入手したクライアントコマンドラインバージョンはバージョン2.6.10でした。
使用されている資格情報(mlabユーザー資格情報ではなくデータベース資格情報)が正しい場合でも、「認証に失敗しました」というエラーが発生しました。
おそらく、dbuser
およびdbpassword
のmLab資格情報を使用している可能性があります。
データベースの新しいユーザーを作成する mLabのWebインターフェースを使用して、そのユーザーでログインしてみてください。
MLabでデータベースのユーザーを作成する方法は次のとおりです。
add database user
var mongoose = require('mongoose');
var mongoDB = "mongodb://user:[email protected]:13936/brary";
mongoose.connect(mongoDB, {
useMongoClient: true
});
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
注:Mlabでデータベースのユーザーを作成する必要があります。これは、Mlabのアカウントログイン詳細ではありません。ここで、myはserおよびdbpasswordに置き換えられます123456に置き換えられますパスワードに@などの特殊文字が含まれる場合、#uで囲む必要があります'dbuser': 'dbpassword'
データベースのユーザー名とパスワードを使用しますか?ほとんどの場合、ユーザーはアカウントのユーザー名を使用するためです。
データベースを選択してユーザーをクリックすると、データベースのユーザー名を見つけることができます