Установка и первоначальная настройка MongoDB в убунту


# mongodb доступен из стандартных репозиториев ubuntu, однако, для установки самых последних версий рекомендуется использовать официальный репозиторий mongodb. на этом шаге мы добавим этот репозиторий на наш сервер.

# ubuntu проверяет подлинность пакетов путём проверки подписей gpg ключей, поэтому сначала нам необходимо импортировать ключ официального репозитория mongodb.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv ea312927

# далее нам необходимо добавить настройки репозитория в apt, чтобы иметь возможность загрузить mongodb с помощью apt.
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

# после добавления репозитория нам необходимо обновить список пакетов.
sudo apt-get update

# теперь мы можем установить пакеты mongodb.
sudo apt-get install -y mongodb-org
# эта команда установит несколько пакетов, содержащих последнюю стабильную версию mongodb, а также некоторые средства настройки сервера mongodb.

# для того, чтобы запускать mongodb в виде сервиса ubuntu 16.04, нам необходимо создать юнит-файл описывающий этот сервис. юнит-файлы сообщают systemd, как управлять соответствующими ресурсами. наиболее часто встречающимся типом юнит-файла является сервис, который указывает, как запускать и останавливать тот или иной сервис. также этот файл указывает, надо ли запускать соответствующий сервис при старте системы, а также, имеет ли сервис зависимости от другого программного обеспечения.
# мы создадим юнит-файл для управления сервисом mongodb. создайте файл конфигурации mongodb.service в директории /etc/systemd/system с помощью nano или любого другого текстового редактора.
# вставьте следующий текст в этот файл, сохраните и закройте его.
# /etc/systemd/system/mongodb.service


[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target


# запустим сервис с помощью systemctl.
sudo systemctl start mongodb

# посмотрим статус
sudo systemctl status mongodb

# последнее, что нам осталось сделать, это включить автоматический запуск mongodb при старте системы.
sudo systemctl enable mongodb

# остановить mongo
# смотрим номер процесса mongo
ps ax | grep mongo
kill -9 <*****>

# логи
/var/lib/mongodb

# проверить, где находится config-файл для mongod, который сейчас запущен
ps -ef | grep mongo
# etc/mongod.conf

# посмотрим как настроен порт, который обслуживает mongo
netstat -tuwpln

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

 # открыть доступ MongoDB для всех IP-адресов
# Отредактируйте конфигурационный файл MongoDB. В Ubuntu:
# sudo vim /etc/mongod.conf


# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1

security:
  authorization: 'enabled'


# список ролей:
read
readWrite
dbAdmin
userAdmin
clusterAdmin
readAnyDatabase
readWriteAnyDatabase
userAdminAnyDatabase
dbAdminAnyDatabase

# Создать админа, после входа под его логином можно будет создавать других пользователей.
mongo
# переходим к базе данных admin
use admin
db.createUser(
  {
    user: "admin",
    pwd: "*****",
    roles: [ { role: "root", db: "admin" } ]
  }
)
exit

# вход
mongo --port 27017 -u "admin" -p "*****" --authenticationDatabase "admin"

# обновить пользователя:
db.updateUser("user",{
  roles: [
    { role: "readWrite", db: "database" }
  ]
})

# удалить пользователя:
db.removeUser("user")
# или
db.dropUser("user")

# просмотр пользователей:
db.getUsers();

# backups
# запуск команды для создания бэкапа:
mongodump -h 127.0.0.1:27017 -d base_domains -u admin -p ***** -o /tizel/backups/mongobackups/

# Возвращает документ , который содержит информацию о незавершенных операциях для экземпляра базы данных.
db.currentOp()

# информация по базе
db.stats()
# информация по коллекции
db.коллекция.stats()

# индексы
# заходим в базу
# use base_domains
# показать индекс в коллекции
db.final.getIndexes()
# удалить индекс по имени
db.final.dropIndex("search_index")
# создать индекс (1 - упорядочить)
db.final.createIndex( {"ip" : 1} )
# или так
db.collection_name.createIndex( {"username" : 1}, {unique:true})
# создание текстового индекса для полнотекстового поиска
db.big.createIndex({"_id":"text"}, {"default_language": "ru"});
# синтаксис - полнотекстовый поиск
# отсортируем  документы по их testScore
# используя команду sort. Больший textScore означает более высокую  релевантность
# первыми будут в списке более релевантные результаты
base_spisok = db.big.find({"$text": {"$search": "привет мир"}}, {"score": {"$meta": "textScore"}}).sort([('score', {'$meta':'textScore'})])
for base_one in base_spisok:
    print(base_one["score"])
 

Комментариев нет:

Отправить комментарий