MongoDB не авторизована ошибка в Ubuntu 16.04 - PullRequest
0 голосов
/ 06 июня 2018

Я устанавливаю сервер на Digitalocean и у меня проблема с MongoDB.Я установил Mongo на сервер и разрешил удаленный доступ.

Я создал двух пользователей.Один для меня супер-пользователь, а другой обычный пользователь для пользователей сайта. Я могу подключиться к Монго через Robomongo 3T (клиент Монго) удаленно для обоих пользователей .

Однако, когда я использую приложение из браузера, простой запрос входа в систему выдает ошибку аутентификации.Вот ошибка:

MongoError: not authorized on DATABASE_NAME to execute command { find: "users", filter: { email: "YYY", password: "XXX" }, limit: 1,           singleBatch: true, batchSize: 1 }

Вот действительный код на стороне сервера:

Подключение базы данных на server.js:

MongoClient.connect(config.mongo_url, (err, client) => {
    if(err) throw err
    console.log('db connected')
    app.locals.db = client
    // start the server
    app.listen(process.env.PORT || 3000, ()=>console.log('listening on port 3000!'))
});

Попытка подключения клокальное монго на сервере:

database.collection(config.mongo_col_user)
.findOne({
    email: username,
    password: hash
}, (err, user)=>{
    if(err) return done(err)
    if(!user) return done(null, false, {msg: 'not found'})
    if(user.password)
    return done(null, user)
})

Я использую pm2 на стороне сервера и использую ecosystem.config.js, который имеет следующий код:

module.exports = {
    apps : [
        {
          name: "NAME",
          script: "SCRIPT_NAME",
          watch: true,
          env: {
            "mongo_url": 'mongodb://USER_NAME:PASSWORD@localhost:27017?authMechanism=SCRAM-SHA-1&authSource=DATABASE_NAME',
            "mongo_db_name": 'DATABASE_NAME',
            "mongo_col_query": "COLLECTION_NAME",
          }
        }
    ]
}

Не могли бы вы помочь с проблемойпожалуйста

1 Ответ

0 голосов
/ 06 июня 2018

Я понял это.

Когда я вносил изменения в файл среды pm2 ecosystem.config.js, я всегда перезапускал pm2 с pm2 restart all.Однако, когда вы изменяете файл, вы должны сообщить pm2, что вы изменили его на pm2 reload ecosystem.config.js --update-env.

Кроме того, правильный синтаксис:

mongodb://USER_NAME:PASSWORD@localhost:27017?authMechanism=SCRAM-SHA-1&authSource=DATABASE_NAME'

, но

mongodb://USER_NAME:PASSWORD@localhost:27017/DATABASE_NAME'

...