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