Установка mongodb

Debian 9 «Stretch»
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
apt-get update

apt-get install -y mongodb-org

включаем как сервис чтобы включался после перезагрузки
systemctl enable mongod.service

Защита mongodb

apt install fail2ban
в /etc/fail2ban/jail.conf заменяем секцию mongodb-auth

[mongodb-auth]

enabled	= true
filter	= mongodb-auth
logpath	= /var/log/mongodb/mongod.log
maxretry = 3
port	= 27017
banaction = iptables-multiport[name="mongo", port="27017"]

bantime = 86400
findtime = 300

в /etc/fail2ban/filter.d/mongodb-auth.conf заменяем строчку на
failregex = ^.*[aA]uthentication [fF]ail(ed|ure) for \w+ on \w+ from client <HOST>:[0-9].*|$
иначе правило не будет работать в mongodb 4

Команды

Создайте пользователя mongo-admin:

db.createUser(
  {
    user: "mongo-admin",
    pwd: "passw0rd",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

Создайте пользователя mongo-root:

db.createUser(
  {
    user: "mongo-root",
    pwd: "passw0rd",
    roles: [ { role: "root", db: "admin" } ]
  }
)


Показать Пользователей в MongoDB
db.getUsers()
или
show users
Удалить пользователя
db.dropUser(«my-user»)

Создать новую БД (коллекцию):

db.createCollection("test")

Создать пользователя в БД
Выбираем БД
use my-database
db.createUser(
{
user: «my-user»,
pwd: «passw0rd»,
roles: [ { role: «readWrite», db: «my-database» } ]
}
)


Например, вы можете создать пользователя my-user и дать ему права readWrite на базу данных my-database и права read на другую базу данных another-database:

> db.createUser(
{
user: «my-user»,
pwd: «passw0rd»,
roles: [
{ role: «readWrite», db: «my-database» },
{ role: «read», db:«another-database» }
]
}
)

Поменять пароль пользователю:
db.changeUserPassword("username", "passwd")

Дать права пользователю:
db.grantRolesToUser( "user", [ { role: "dbOwner", db: "database" } ] )

Убрать права
db.revokeRolesFromUser( "user", [ { role: "dbOwner", db: "database" } ] )

Чтобы пользователь root мог делать dump всех БД необходимо дать ему дополнительно права «backup»
use admin
db.grantRolesToUser( "root", [ { role: "backup", db: "admin" } ] )

Восстановить бекап
mongorestore --db database -uroot -ppass --authenticationDatabase admin --drop /folder/to/dump/

mongoexport --db test --collection traffic --out traffic.json
mongoexport --username user --password pass --host host --db database --collection coll --csv
mongoexport -h kahana.mongohq.com:12345 -u username -p password -d my_db -c usercollection -f "firstName,lastName,macIdNum,iclass" --csv
дополнительные поля:
--type csv или json
--jsonArray
--pretty

Включить Аутентификацию в MongoDB

Откройте конфиг-файл MongoDB /etc/mongod.conf и включите авторизацию:

security:
  authorization: "enabled"

Включаем доступ на всех интерфейсах:
# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0


MongoDB в Docker

Скачиваем свежую версию
docker pull mongo

Запускаем контейнер и даем ему имя mongo-db
docker run -d -p 0.0.0.0:27017:27017 --name mongo-db mongo
если надо чтобы контеёнер автозапускался после перезагрузки то добавляем --restart always

можно уже после создания контейнера добавить запуск автозапуск
docker update --restart always mongo-db

Примонтировать базу c host машины
-v /mnt/mongodb:/var/lib/mongodb


Смотрим что контейнер запустился
docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                          PORTS                        NAMES
bdcbdcbdc        mongo:latest        "docker-entrypoint..."   7 weeks ago         Exited (0) 3 seconds ago        0.0.0.0:27017->27017/tcp  mongo-db

ручной запуск контейнера
docker start mongo-db

попасть в нутрь контейнера для выполнения команд
docker exec -it mongo-db bash
docker exec -it mongo-db mongo

Просмотр логов
docker logs mongo-db


Дополнительные параметры

Подключение к контейнеру MongoDB из другого контейнера
docker run --link my-mongo:mongo -p 0.0.0.0:8081:8081 mongo-express
и можно получить теперь доступ по localhost:8081 или по IP

Proxmox примонтировать директорию в VM

blog.himic.ru/2019/04/21/proxmox-primontirovat-direktoriyu-vnutr-konteynera.html

Нет комментариев