Установка mongodb
Debian 9 «Stretch»
включаем как сервис чтобы включался после перезагрузки
в /etc/fail2ban/filter.d/mongodb-auth.conf заменяем строчку на
Создайте пользователя mongo-admin:
Создайте пользователя mongo-root:
Показать Пользователей в MongoDB
db.dropUser(«my-user»)
Создать новую БД (коллекцию):
Создать пользователя в БД
Выбираем БД
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» }
]
}
)
Поменять пароль пользователю:
Дать права пользователю:
Убрать права
Чтобы пользователь root мог делать dump всех БД необходимо дать ему дополнительно права «backup»
Восстановить бекап
Включить Аутентификацию в MongoDB
Откройте конфиг-файл MongoDB /etc/mongod.conf и включите авторизацию:
Включаем доступ на всех интерфейсах:
Запускаем контейнер и даем ему имя mongo-db
можно уже после создания контейнера добавить запуск автозапуск
Примонтировать базу c host машины
Смотрим что контейнер запустился
ручной запуск контейнера
попасть в нутрь контейнера для выполнения команд
Просмотр логов
Подключение к контейнеру MongoDB из другого контейнера
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
Нет комментариев