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

143 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Решение проблем с подключением к 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 сервера для:
- Проверки учетных данных
- Настройки прав доступа
- Проверки конфигурации сервера