How to manage MongoDB on Linux ?

Popular:
LEVEL UP YOUR SERVER SETUP! APPLY AVA AND LAUNCH WITH A 15% DISCOUNT
USE PROMO:

Managing MongoDB on a Linux VPS involves installation, configuration, security, and performance optimization.

Managing MongoDB on a Linux VPS is essential for developers and system administrators aiming to harness the full potential of this powerful NoSQL database. From installation and configuration to security and performance optimization, a well-managed MongoDB setup ensures reliability, scalability, and efficiency for your applications.

By following the comprehensive steps outlined in our guide, you can ensure that your MongoDB instance is not only operational but also secure and optimized for performance. Implementing best practices in installation, authentication, access control, and resource management will provide a robust foundation for your data-driven applications. Regular monitoring and maintenance further guarantee that your database remains responsive and resilient to evolving demands.

For those seeking to streamline MongoDB management, consider leveraging automation tools and scripts to handle routine tasks efficiently. Additionally, exploring graphical interfaces like MongoDB Compass or NoSQLBooster can simplify database interactions, especially for complex queries and data visualization. By integrating these tools into your workflow, you can enhance productivity and maintain a high-performing MongoDB environment.
Baeldung.

1. Installing MongoDB on Linux VPS

MongoDB can be installed using package managers like apt (for Debian/Ubuntu) or yum (for CentOS/RHEL).

For Ubuntu/Debian

  1. Update package list:
    sudo apt update 
sudo apt upgrade -y
  • Import MongoDB GPG key:
    curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-keyring.gpg
  • **Run the following command to add the missing public key:

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys B00A0BD1E2C63C11
    or

    **Run this command to manually import the key:

    wget -qO - https://pgp.mongodb.com/server-5.0.asc | sudo tee /etc/apt/trusted.gpg.d/mongodb-server-5.0.

    Check if the key was added successfully:

    gpg --dry-run --quiet --import --import-options import-show /etc/apt/trusted.gpg.d/mongodb-server
  • Add MongoDB repository:
    Ubuntu:
    echo "deb [signed-by=/usr/share/keyrings/mongodb-server-keyring.gpg] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

    Debian:

    echo "deb [signed-by=/etc/apt/trusted.gpg.d/mongodb-server-5.0.asc] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/5.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
  • Install MongoDB:
    sudo apt update
    sudo apt install -y mongodb-org
  • Start and Enable MongoDB:
    sudo systemctl start mongod
    sudo systemctl enable mongod
  • For CentOS/RHEL

    1. Add MongoDB repository:
      sudo tee /etc/yum.repos.d/mongodb-org-6.0.repo <<EOF
      [mongodb-org-6.0]
      name=MongoDB Repository
      baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
      gpgcheck=1
      enabled=1
      gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
      EOF
    2. Install MongoDB:
      sudo yum install -y mongodb-org
    3. Start and Enable MongoDB:
      sudo systemctl start mongod
      sudo systemctl enable mongod

    2. Securing MongoDB

    By default, MongoDB listens on localhost (127.0.0.1). To secure it:

    Enable Authentication

    1. Create an admin user:
      mongosh
      use admin
      db.createUser({
      user: "admin",
      pwd: "StrongPassword",
      roles: [{ role: "root", db: "admin" }]
      })
    2. Enable authentication in MongoDB config file:
      sudo nano /etc/mongod.conf

      Find the security section and add:

      security:
      authorization: enabled
    3. Restart MongoDB:
      sudo systemctl restart mongod

    Restrict External Access

    1. Modify MongoDB to listen only to localhost:
      sudo nano /etc/mongod.conf

      Change:

      bindIp: 127.0.0.1
    2. Use UFW (Ubuntu) or FirewallD (CentOS) to allow only specific IPs:
      sudo ufw allow from YOUR_IP to any port 27017

    3. Managing MongoDB

    Check MongoDB Service Status

    sudo systemctl status mongod

    Restart MongoDB

    sudo systemctl restart mongod

    Stop MongoDB

    sudo systemctl stop mongod

    Enable MongoDB to Start on Boot

    sudo systemctl enable mongod

    4. Managing Databases in MongoDB

    Connect to MongoDB

    mongosh

    Create a Database

    use mydatabase

    Show Databases

    show dbs

    Create a Collection

    db.createCollection("users")

    Insert Data

    db.users.insertOne({ name: "John Doe", age: 30, email: "john@example.com" })

    Find Data

    db.users.find()

    Delete a Database

    use mydatabase
    db.dropDatabase()

    5. Backups and Restores

    Backup MongoDB Database

    mongodump --db=mydatabase --out=/backup/

    Restore MongoDB Database

    mongorestore --db=mydatabase /backup/mydatabase/

    6. Performance Optimization

    Indexing for Faster Queries

    db.users.createIndex({ email: 1 })

    Monitoring Performance

    db.serverStatus()

    Limit Memory Usage

    Modify wiredTigerCacheSizeGB in /etc/mongod.conf:

    storage:
    wiredTiger:
    engineConfig:
    cacheSizeGB: 1

    Use Connection Pooling

    Modify /etc/mongod.conf:

    net:
    maxIncomingConnections: 1000

    7. Logs and Debugging

    View MongoDB Logs

    sudo journalctl -u mongod --no-pager | tail -n 50

    Check Error Logs

    sudo cat /var/log/mongodb/mongod.log

    8. Uninstall MongoDB (If Needed)

    For Ubuntu/Debian

    sudo systemctl stop mongod
    sudo apt purge -y mongodb-org*
    sudo rm -r /var/log/mongodb /var/lib/mongodb

    For CentOS/RHEL

    sudo systemctl stop mongod
    sudo yum remove -y mongodb-org*
    sudo rm -r /var/log/mongodb /var/lib/mongodb

    Conclusion

    Managing MongoDB on a Linux VPS requires proper installation, security hardening, and performance optimization. By following these steps, you ensure your MongoDB database runs efficiently and securely. 🚀

    Would you like help with automation scripts for managing MongoDB? 😊