Добавлена ниже зависимость и разрешена проблема
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
Вам необходимо назначить роль read
соответствующему пользователю.
Роль dbAdmin
не включает доступ для чтения на несистемные коллекции.
Для любого, кто сталкивается с этой проблемой против Mongo 3.0.6, я исправил добавление
?authMode=scram-sha1
в конце моего монгодб-ури.
Вот некоторые документы, объясняющие scram-sha1
У меня была такая же проблема, пока я не понял, что допустил ошибку. Я наследовал клиента mongo, указывающего на другую базу данных из родительского класса Perl, не осознавая этого. Возможно, вы можете проверить.
В дополнение к ответу @ Себастьяна это явно означает:
Предоставить роль
Предоставить роль, используя метод db.grantRolesToUser (). Например, следующая операция предоставляет пользователю отчетов пользователя роль чтения в базе данных учетных записей:
blockquote>db.grantRolesToUser( "your_user", [ { role: "read", db: "your_db" } ] )
Я публикую это, потому что у меня возникли проблемы с поиском этого решения в Интернете. Проблема неловкая, но сообщение об ошибке и сценарий несколько затрудняют ее выяснение, поэтому я надеюсь немного сэкономить. Мое приложение смогло установить соединение с базой данных, запустить и обслуживать статические страницы, но каждый раз, когда он пытался выполнить запрос, я получил эту ошибку.
MongoError: not authorized on mydb to execute command { count: "urls", query: {} }
Эта ошибка была вызвана идентификатором пользователя и паролем с помощью неправильный разделитель
mongodb://myuserid/mypassword@ds112345.mlab.com:12345/mydb [wrong]
mongodb://myuserid:mypassword@ds112345.mlab.com:12345/mydb [right]
Хотя приложение-узел удалось успешно подключиться к MongoDB, неверно отформатированный URI заставил драйвер пропустить аутентификацию до выдачи команд базы данных.
Спасибо и наконечник шляпы людям при поддержке mLab.