Я включил аутентификацию в моей базе данных mongo и добавил пользователя следующим образом.
db.createUser({
user: "myuser",
pwd: "abc123",
roles: [ "readWriteAnyDatabase" ]
});
Я использую этого пользователя для запуска сервера экспресс-узлов. База данных успешно подключается, но затем происходит сбой со следующим исключением.
Unhandled rejection MongoError: not authorized on SessionDB to execute command { listIndexes: "sessions", cursor: {} }
at Function.MongoError.create (/Users/myuser/code/test_project/node_modules/mongodb-core/lib/error.js:31:11)
at queryCallback (/Users/myuser/code/test_project/node_modules/mongodb-core/lib/cursor.js:212:36)
at /Users/myuser/code/test_project/node_modules/mongodb-core/lib/connection/pool.js:469:18
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickCallback (internal/process/next_tick.js:104:9)
Unhandled rejection MongoError: not authorized on SessionDB to execute command { listIndexes: "sessions", cursor: {} }
at Function.MongoError.create (/Users/myuser/code/test_project/node_modules/mongodb-core/lib/error.js:31:11)
at queryCallback (/Users/myuser/code/test_project/node_modules/mongodb-core/lib/cursor.js:212:36)
at /Users/myuser/code/test_project/node_modules/mongodb-core/lib/connection/pool.js:469:18
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickCallback (internal/process/next_tick.js:104:9)
Я прочитал документацию для mongodb, где написано, что индексы сохраняются в системной коллекции, но встроенная роль read
должна позволять пользователю получать к ним доступ. Я попытался дать моим пользователям встроенные роли readAnyDatabase
и read
, я также попробовал много других способов заставить его работать, но это все еще дает то же исключение.
Я вижу, что подобные вопросы задавались ранее на этом форуме, но они не дают никакого описания или решения.