| Line 1: |
Line 1: |
| | == Installation == | | == Installation == |
| − | === Ubuntu 14.04 === | + | === Ubuntu 14.04, 15.10 === |
| | sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 | | sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 |
| | echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list | | echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list |
| | sudo apt-get update | | sudo apt-get update |
| | + | ==== Client and Server ==== |
| | sudo apt-get install -y mongodb-org | | sudo apt-get install -y mongodb-org |
| | + | ==== Client only ==== |
| | + | sudo apt-get install mongodb-clients |
| | Check if service is active | | Check if service is active |
| | sudo systemctl status mongd | | sudo systemctl status mongd |
| | If it's not working | | If it's not working |
| | sudo reboot | | sudo reboot |
| − | If it still not working<br /> | + | If it still not working, create and run the script enable_mongo.sh with:<br /> |
| − | https://gist.github.com/sgnn7/54146c8a13c8b5ca2201
| + | <source lang="bash">echo '[Unit] |
| | + | Description=High-performance, schema-free document-oriented database |
| | + | After=syslog.target network.target |
| | + | |
| | + | [Service] |
| | + | User=mongodb |
| | + | Group=mongodb |
| | + | ExecStart=/usr/bin/mongod -f /etc/mongod.conf |
| | + | |
| | + | [Install] |
| | + | WantedBy=multi-user.target' > /lib/systemd/system/mongod.service |
| | + | |
| | + | # Setup the required directories |
| | + | mkdir -p /var/run/mongodb/ |
| | + | mkdir -p /var/log/mongodb/ |
| | + | mkdir -p /var/lib/mongodb/ |
| | + | mkdir -p /data/db/ |
| | + | |
| | + | chown mongodb:mongodb /var/run/mongodb/ |
| | + | chown mongodb:mongodb /var/log/mongodb/ |
| | + | chown mongodb:mongodb /var/lib/mongodb/ |
| | + | chown mongodb:mongodb /data/db |
| | + | |
| | + | chmod 0755 /var/log/mongodb/ |
| | + | chmod 0755 /var/run/mongodb/ |
| | + | chmod 0755 /var/lib/mongodb/ |
| | + | chmod 0755 /data/db/ |
| | + | |
| | + | # Start the new service and enable it on boot |
| | + | systemctl --system daemon-reload |
| | + | systemctl enable mongod.service |
| | + | |
| | + | echo "Starting" |
| | + | systemctl start mongod.service</source> |
| | | | |
| | # Specific version install: sudo apt-get install -y mongodb-org=3.2.1 mongodb-org-server=3.2.1 mongodb-org-shell=3.2.1 mongodb-org-mongos=3.2.1 mongodb-org-tools=3.2.1<br /> | | # Specific version install: sudo apt-get install -y mongodb-org=3.2.1 mongodb-org-server=3.2.1 mongodb-org-shell=3.2.1 mongodb-org-mongos=3.2.1 mongodb-org-tools=3.2.1<br /> |
| Line 37: |
Line 73: |
| | <nowiki>security: | | <nowiki>security: |
| | authorization: enabled</nowiki> | | authorization: enabled</nowiki> |
| | + | ==== Add user roles ==== |
| | + | <nowiki>use reporting |
| | + | db.grantRolesToUser( |
| | + | "reportsUser", |
| | + | [ |
| | + | { role: "read", db: "accounts" } |
| | + | ] |
| | + | )</nowiki> |
| | + | ==== Revoke user roles ==== |
| | + | <nowiki>use reporting |
| | + | db.revokeRolesFromUser( |
| | + | "reportsUser", |
| | + | [ |
| | + | { role: "readWrite", db: "accounts" } |
| | + | ] |
| | + | )</nowiki> |
| | + | |
| | + | ==== Create User ==== |
| | + | <nowiki>use test |
| | + | db.createUser( |
| | + | { |
| | + | user: "tester", |
| | + | pwd: "password", |
| | + | roles: [ |
| | + | { role: "read", db: "test1" }, |
| | + | { role: "read", db: "test2" }, |
| | + | { role: "read", db: "test3" }, |
| | + | { role: "readWrite", db: "test" } |
| | + | ] |
| | + | } |
| | + | );</nowiki> |
| | + | or |
| | + | <nowiki>use products |
| | + | db.addUser( { user: "Alice", |
| | + | pwd: "Moon1234", |
| | + | roles: [ "readWrite", "dbAdmin" ] |
| | + | } )</nowiki> |
| | + | or |
| | + | <nowiki>db.createUser( |
| | + | ... { |
| | + | ... user: "....", |
| | + | ... pwd: ".........", |
| | + | ... roles: [ "readWrite" ] |
| | + | ... } |
| | + | ... ) |
| | + | </nowiki> |
| | + | |
| | + | ==== Drop User ==== |
| | + | <nowiki>db.dropUser(username)}</nowiki> |
| | + | |
| | + | === Enable remote connections === |
| | + | * Edit /etc/mongodb.conf |
| | + | * Add the ip's you whish to enable for remote access to bind_ip separated by ',' (Dont remove 127.0.0.1!!) |
| | + | bind_ip = 127.0.0.1,192.168.56.222 |
| | + | |
| | + | === Disable Transparent Huge Pages (THP) === |
| | + | Create the init.d script.<br /> |
| | + | Create the following file at /etc/init.d/disable-transparent-hugepages: |
| | + | <source lang="bash">#!/bin/sh |
| | + | ### BEGIN INIT INFO |
| | + | # Provides: disable-transparent-hugepages |
| | + | # Required-Start: $local_fs |
| | + | # Required-Stop: |
| | + | # X-Start-Before: mongod mongodb-mms-automation-agent |
| | + | # Default-Start: 2 3 4 5 |
| | + | # Default-Stop: 0 1 6 |
| | + | # Short-Description: Disable Linux transparent huge pages |
| | + | # Description: Disable Linux transparent huge pages, to improve |
| | + | # database performance. |
| | + | ### END INIT INFO |
| | + | |
| | + | case $1 in |
| | + | start) |
| | + | if [ -d /sys/kernel/mm/transparent_hugepage ]; then |
| | + | thp_path=/sys/kernel/mm/transparent_hugepage |
| | + | elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then |
| | + | thp_path=/sys/kernel/mm/redhat_transparent_hugepage |
| | + | else |
| | + | return 0 |
| | + | fi |
| | + | |
| | + | echo 'never' > ${thp_path}/enabled |
| | + | echo 'never' > ${thp_path}/defrag |
| | + | |
| | + | unset thp_path |
| | + | ;; |
| | + | esac</source> |
| | + | Make it executable: |
| | + | sudo chmod 755 /etc/init.d/disable-transparent-hugepages |
| | + | Configure your operating system to run it on boot.<br /> |
| | + | |
| | + | Use the appropriate command to configure the new init script on your Linux distribution.<br /> |
| | + | |
| | + | Distribution Command<br /> |
| | + | |
| | + | Ubuntu and Debian <nowiki>sudo update-rc.d disable-transparent-hugepages defaults</nowiki><br /> |
| | + | SUSE <nowiki>sudo insserv /etc/init.d/disable-transparent-hugepages</nowiki><br /> |
| | + | Red Hat, CentOS, Amazon Linux, and derivatives <nowiki>sudo chkconfig --add disable-transparent-hugepages</nowiki><br /> |
| | | | |
| | == Start/Stop/Restart MongoDB == | | == Start/Stop/Restart MongoDB == |
| Line 111: |
Line 245: |
| | #:: user: "myUserAdmin", | | #:: user: "myUserAdmin", |
| | #:: pwd: "abc123", | | #:: pwd: "abc123", |
| − | #:: roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] | + | #:: roles: [ { role: "root", db: "admin" } ] |
| | #:: } | | #:: } |
| | #::)</pre> | | #::)</pre> |