Skip to main content

Single Node

Server IPHost Role
192.168.10.4MongoDB Standalone

Start Deployment​

  1. Download the MongoDB installation package and extract it to the installation directory

    wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.31.tgz
    tar -zxvf mongodb-linux-x86_64-rhel70-4.4.31.tgz
    mv mongodb-linux-x86_64-rhel70-4.4.31 /usr/local/mongodb
  2. Create the MongoDB user

    useradd -M -s /sbin/nologin mongodb
  3. Create data and log directories and grant permissions

    mkdir -p /data/mongodb/ /data/logs/mongodb
    chown -R mongodb:mongodb /usr/local/mongodb/ /data/mongodb/ /data/logs/mongodb
  4. Disable Transparent Huge Pages (THP)

    MongoDB may experience performance degradation and memory fragmentation when THP is enabled. It is recommended to disable it via a systemd service before starting MongoDB.

    cat > /etc/systemd/system/disable-thp.service <<\EOF
    [Unit]
    Description=Disable Transparent Huge Pages (THP)
    DefaultDependencies=no
    After=sysinit.target local-fs.target
    Before=mongodb.service
    [Service]
    Type=oneshot
    ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'
    ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/defrag'
    [Install]
    WantedBy=basic.target
    EOF

    systemctl daemon-reload
    systemctl enable disable-thp
    systemctl start disable-thp
  5. Configure the systemd management file

    cat > /etc/systemd/system/mongodb.service <<'EOF'
    [Unit]
    Description=MongoDB
    After=network-online.target
    Wants=network-online.target
    [Service]
    User=mongodb
    Group=mongodb
    LimitNOFILE=1000000
    LimitNPROC=1000000
    LimitMEMLOCK=infinity
    ExecStart=/usr/local/mongodb/bin/mongod --logpath /data/logs/mongodb/mongodb.log --dbpath /data/mongodb --auth --port 27017 --bind_ip 0.0.0.0
    ExecStop=/usr/bin/kill $MAINPID
    Restart=on-failure
    RestartSec=5
    TimeoutStopSec=300
    [Install]
    WantedBy=multi-user.target
    EOF
  6. Add to startup

    # Do not start the service with systemctl start mongodb until the user has been created
    systemctl daemon-reload
    systemctl enable mongodb

Create Database Users​

  1. Temporarily start MongoDB without authentication

    su -c '/usr/local/mongodb/bin/mongod --fork --logpath /data/logs/mongodb/mongodb.log --dbpath /data/mongodb --noauth --port 27017' -s /bin/bash mongodb
  2. Log in to MongoDB

    Run in the system terminal:

    /usr/local/mongodb/bin/mongo --host 127.0.0.1 --port 27017

    Run the following user creation statements in mongo.

  3. Create the administrator user

    db.getSiblingDB("admin").createUser({
    user: "root",
    pwd: "12345678",
    roles: [{role: "root", db: "admin"}]
    });
    • The example password for the root user in the MongoDB admin database is 12345678. Replace it with a strong password for your deployment.
  4. Create business database users

    var businessUser = "hap";
    var businessPassword = "123456";
    var databases = [
    "MDLicense",
    "ClientLicense",
    "commonbase",
    "MDAlert",
    "mdapproles",
    "mdapprove",
    "mdapps",
    "mdattachment",
    "mdcalendar",
    "mdcategory",
    "MDChatTop",
    "mdcheck",
    "mddossier",
    "mdemail",
    "mdform",
    "MDGroup",
    "mdgroups",
    "MDHistory",
    "mdIdentification",
    "mdinbox",
    "mdkc",
    "mdmap",
    "mdmobileaddress",
    "MDNotification",
    "mdpost",
    "mdreportdata",
    "mdroles",
    "mdsearch",
    "mdservicedata",
    "mdsms",
    "MDSso",
    "mdtag",
    "mdtransfer",
    "MDUser",
    "mdworkflow",
    "mdworksheet",
    "mdworkweixin",
    "mdwsrows",
    "pushlog",
    "taskcenter",
    "mdintegration",
    "mdactionlog",
    "mdworksheetlog",
    "mdworksheetsearch",
    "mddatapipeline",
    "mdwfplugin",
    "mdpayment",
    "mdwfai",
    "mdopenauth",
    "mdaisearch",
    "MDAgentInfra"
    ];
    for (var i = 0; i < databases.length; i++) {
    var database = databases[i];
    db.getSiblingDB(database).createUser({
    user: businessUser,
    pwd: businessPassword,
    roles: [{role: "readWrite", db: database}]
    });
    }
    • The example password for the hap users in the MongoDB business databases is 123456. Replace it with a strong password for your deployment.
    • If the password contains special characters, use only - or _. Do not use characters such as @ ! # & to avoid compatibility issues.
  5. Exit mongo

    exit();
  6. Stop the temporary MongoDB instance

    Return to the system terminal and run:

    kill $(pgrep -f 'mongod')

Start MongoDB​

systemctl start mongodb

Verify Service Status​

  1. Check MongoDB status

    systemctl status mongodb
  2. Test admin connection

    Use the following command to test the connection of the admin account

    /usr/local/mongodb/bin/mongo -u root -p 12345678 --authenticationDatabase admin
  3. Test business database connection

    Use the following command to test the connection of a single business database user

    /usr/local/mongodb/bin/mongo -u hap -p 123456 --authenticationDatabase mdwsrows