MongoDB Debian WSL

Шаг 1: Обновить систему

sudo apt update && sudo apt upgrade -y

Получил ошибку:

Err:14 https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/debian   bookworm InRelease
  402  Payment Required [IP: 18.165.122.36 443]
Reading package lists... Done
E: Failed to fetch https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/debian/dists/bookworm/InRelease    402  Payment Required [IP: 18.165.122.36 443]
E: The repository 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/debian   bookworm InRelease' is no longer signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: Failed to fetch https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/debian/dists/bookworm/InRelease    402  Payment Required [IP: 18.165.122.36 443]
E: The repository 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/debian   bookworm InRelease' is no longer signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

К моей системе оказались подключены репозитории RabbitMQ (rabbitmq-erlang и rabbitmq-server), которые требуют оплаты (код 402 Payment Required). Это и блокирует обновление пакетов.

Удалил проблемные репозитории RabbitMQ

sudo rm /etc/apt/sources.list.d/rabbitmq*.list 2>/dev/null
sudo rm /etc/apt/sources.list.d/cloudsmith*.list 2>/dev/null

Повторил шаг обновления.

Шаг 2: Установка MongoDB (актуальная версия 8.0)

sudo apt install -y mongodb-org

Можно проверить:

dpkg -l | grep mongodb-org

Шаг 3: Создаем директории для данных и логов, настраиваем права

sudo mkdir -p /var/lib/mongodb /var/log/mongodb
sudo chown -R $USER:$USER /var/lib/mongodb /var/log/mongodb

Шаг 4: Запускаем MongoDB вручную

mongod --config /etc/mongod.conf --fork --logpath /var/log/mongodb/mongod.log

Проверяем:

ps aux | grep mongod
# Должен быть процесс /usr/bin/mongod

Шаг 5: Подключаюсь к MongoDB

mongosh

Если команда не найдена — установите MongoDB Shell

sudo apt install -y mongodb-mongosh

Мне потребовалось поменять порт.

sudo vim /etc/mongod.conf

Находим секцию net: и добавьте/измените параметр port:

net:
  port: 27018  # Новый порт
  bindIp: 127.0.0.1  

Проверяем свободен ли порт:

sudo lsof -i :27018

Перезапускаю MongoDB

sudo pkill mongod

Запускаю MongoDB с новым портом:

mongod --config /etc/mongod.conf --fork --logpath /var/log/mongodb/mongod.log

Можно убедиться, что MongoDB слушает новый порт

sudo netstat -tuln | grep 27018
# Должно быть: tcp        0      0 127.0.0.1:27018         0.0.0.0:*               LISTEN

Подключился к новому порту:

mongosh --port 27018

Шаг 6: Добавление бд и пользователя

Включаю аутентификацию

sudo vim /etc/mongod.conf

Добавил в секцию security

security:
  authorization: enabled

Перезапустил MongoDB

sudo pkill mongod
mongod --config /etc/mongod.conf --fork --logpath /var/log/mongodb/mongod.log

Создаю администратора

mongosh --port 27018
// Переключитесь на служебную БД admin
use admin

// Создайте суперпользователя
db.createUser({
  user: "admin",
  pwd: "пароль", 
  roles: ["root"]
})

Подключаюсь с аутентификацией

mongosh --port 27018 -u admin -p пароль --authenticationDatabase admin

Создаю базу данных и пользователя

// 1. Создайте/переключитесь на свою БД (например, "myapp")
use myapp

// 2. Создайте пользователя с правами на ЭТУ БД
db.createUser({
  user: "app_user",
  pwd: "пароль", 
  roles: [
    { role: "readWrite", db: "myapp" }, 
    { role: "dbAdmin", db: "myapp" }    
  ]
})

// 3. Проверьте
show users

Проверяю работу:

mongosh --port 27018 -u app_user -p пароль --authenticationDatabase myapp

Добавить комментарий