143 lines
4.4 KiB
Markdown
143 lines
4.4 KiB
Markdown
# Решение проблем с подключением к 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 сервера для:
|
||
|
||
- Проверки учетных данных
|
||
- Настройки прав доступа
|
||
- Проверки конфигурации сервера
|