Начало работы с MongoDB в CentOS 6/7

Итак, приступим к установке.
Для начала подключим репозиторий третей версии. В ней добавлено множество фишек и оптимизаций. А самое главное улучшена безопасность, что для нас - основа выбора.
Для подключения создадим/откроем файл:
nano /etc/yum.repos.d/mongodb-org-3.0.repo
И внесём в него следующее содержание:

[mongodb-org-3.0]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1

Обращаю Ваше внимание, что версии для 32-битных систем нет!

Далее, сама установка:

yum install mongodb-org

Сразу же пропишем её в автозагрузку:
chkconfig mongod on
И запустим:
service mongod start

Не забываем, что MongoDB по умолчанию не включает авторизацию пользователей. Если Вы ещё при этом откроете её наружу - будет очень плохо ;-)
Поэтому, первым делом, мы создадим root пользователя и включим авторизацию по паролю.
Заходим в консоль управления БД:
mongo
Следуя официальной документации, создадим базу admin, в которой создадим root пользователя:

use admin
db.createUser( { user: "root", pwd: "passwd", roles: [ "userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase" ] } )

P.S. Кстати, по желанию, можно сразу добавить root-пользователю права для создания резервных копий баз данных. Команда ниже в списке.
Далее, выходим из консоли с помощью команды "exit" или сочетания клавиш "ctrl+d".
Проверяем, что мы записали пароль и всё работаем :-)
mongo -u 'root' admin -p
Да, указать базу, к которой мы подключаемся - обязательно. По ней идёт проверка пользователя.

Так, теперь нам нужно включить механизм аутентификации. Для этого открываем файл конфигурации:
nano /etc/mongod.conf
И раскомментируем строку:
auth=true
В версии старше 3.0.7 необходимо раскомментировать строку security и дописать ниже строку, по примеру, соблюдая пробелы:

security:
  authorization: enabled

Сохраняем, выходим, перезапускаем mongodb:
service mongod restart
Кстати, если Вам всё же надо открыть её наружу, в том же файле есть параметр "bind_ip=", в котором надо изменить "127.0.0.1" на Ваш внешний IP. И перезапустить mongodb. Не забудьте проверить, что у Вас есть соответствующее правило в iptables! Или он выключен, как у не правильных пацанов :-)
Проверяем?
mongo
Пустило? Так и должно быть :-) Дело в том, что больше Вы ничего сделать не сможете. Ни посмотреть, ни уж тем более создать.
Ну, вот и всё. Ниже список полезных команд для начала работы.

  • Создать пользователя root:
    use admin
    db.createUser( { user: "root", pwd: "passwd", roles: [ "userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase" ] } )
  • Создать новую БД (коллекцию):
    db.createCollection('New_database')
  • Создать другого пользователя:
    use database
    db.createUser( { user: "username", pwd: "passwd", roles: [ { role: "readWrite", db: "database" } ] } )
  • Удалить пользователя
    db.dropUser("username")
  • Поменять пароль пользователю:
    db.changeUserPassword("username", "passwd")
  • Дать права пользователю:
    db.grantRolesToUser( "user", [ { role: "dbOwner", db: "database" } ] )
  • Убрать права
    db.revokeRolesFromUser( "user", [ { role: "dbOwner", db: "database" } ] )
  • Посмотреть права
    use database
    db.getUser("username")
  • Посмотреть всех пользователей
    db.getUsers()
  • Чтобы пользователь root мог делать dump всех БД необходимо дать ему дополнительно права "backup" (изменения с версии 2.6)
    use admin
    db.grantRolesToUser( "root", [ { role: "backup", db: "admin" } ] )
  • Восстановить бекап
    mongorestore --db database -uroot -ppass --authenticationDatabase admin --drop /folder/to/dump/

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

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Target Image