Files
marketing-parser/MONGODB_TROUBLESHOOTING.md
T
2025-09-14 11:46:47 +05:00

4.4 KiB
Raw Blame History

Решение проблем с подключением к 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. Тестирование

  1. Запустите приложение:

    ./mvnw spring-boot:run
    
  2. Проверьте подключение к MongoDB:

    curl http://localhost:8080/api/parser/health/mongodb
    
  3. Если подключение успешно, запустите парсинг:

    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 сервера для:

  • Проверки учетных данных
  • Настройки прав доступа
  • Проверки конфигурации сервера