# Решение проблем с подключением к MongoDB ## Проблема: Ошибка аутентификации ``` Command failed with error 13 (Unauthorized): 'Command find requires authentication' ``` ## Причина MongoDB сервер на `92.38.48.166:27017` требует аутентификацию, но в конфигурации не указаны учетные данные. ## Решение ### 1. Обновлена конфигурация MongoDB В файле `src/main/resources/application.properties` добавлены настройки аутентификации: ```properties # MongoDB Configuration spring.data.mongodb.host=92.38.48.166 spring.data.mongodb.port=27017 spring.data.mongodb.database=parser_db spring.data.mongodb.username=parser_user spring.data.mongodb.password=parser_password spring.data.mongodb.authentication-database=admin ``` ### 2. Альтернативный способ подключения Если отдельные параметры не работают, используйте URI подключения: ```properties # Закомментируйте отдельные параметры и раскомментируйте URI # spring.data.mongodb.host=92.38.48.166 # spring.data.mongodb.port=27017 # spring.data.mongodb.database=parser_db # spring.data.mongodb.username=parser_user # spring.data.mongodb.password=parser_password # spring.data.mongodb.authentication-database=admin # Используйте URI подключения spring.data.mongodb.uri=mongodb://parser_user:parser_password@92.38.48.166:27017/parser_db?authSource=admin ``` ### 3. Проверка подключения #### Через API: ```bash curl http://localhost:8080/api/parser/health/mongodb ``` #### Через MongoDB клиент: ```bash mongo mongodb://parser_user:parser_password@92.38.48.166:27017/parser_db?authSource=admin ``` ### 4. Возможные проблемы и решения #### Проблема: Неверные учетные данные **Решение:** Проверьте правильность username/password с администратором MongoDB #### Проблема: Пользователь не существует **Решение:** Создайте пользователя в MongoDB: ```javascript use admin db.createUser({ user: "parser_user", pwd: "parser_password", roles: [ { role: "readWrite", db: "parser_db" } ] }) ``` #### Проблема: Пользователь не имеет прав **Решение:** Предоставьте права на базу данных: ```javascript use parser_db db.grantRolesToUser("parser_user", ["readWrite"]) ``` #### Проблема: Firewall блокирует подключение **Решение:** Убедитесь, что порт 27017 открыт на сервере MongoDB ### 5. Улучшения в коде #### Улучшенная обработка ошибок - Добавлена специфическая обработка ошибок аутентификации - Более информативные сообщения об ошибках - Graceful handling ошибок подключения #### Новый endpoint для диагностики - `GET /api/parser/health/mongodb` - проверка подключения к MongoDB - Возвращает статус подключения и количество записей - Предоставляет рекомендации при ошибках ### 6. Тестирование 1. **Запустите приложение:** ```bash ./mvnw spring-boot:run ``` 2. **Проверьте подключение к MongoDB:** ```bash curl http://localhost:8080/api/parser/health/mongodb ``` 3. **Если подключение успешно, запустите парсинг:** ```bash curl -X POST http://localhost:8080/api/parser/parse/all ``` ### 7. Логирование Уровень логирования MongoDB настроен для диагностики: ```properties logging.level.org.springframework.data.mongodb=INFO logging.level.com.mongodb=WARN ``` ### 8. Контакты Если проблема не решается, обратитесь к администратору MongoDB сервера для: - Проверки учетных данных - Настройки прав доступа - Проверки конфигурации сервера