美文网首页
CentOS8安装MongoDB4

CentOS8安装MongoDB4

作者: 深入浅出 | 来源:发表于2021-04-26 14:03 被阅读0次

    1 在CentOS 8服务器中安装MongoDB yum存储库

    [root@mongodb ~]# hostnamectl set-hostname mongodb.lianglab.cn
    [root@mongodb ~]# vi /etc/yum.repos.d/mongodb-org-4.4.repo
    

    在此文件中添加以下配置

    [mongodb-org-4.4]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
    

    为MongoDB yum存储库构建缓存

    [root@mongodb ~]# dnf clean all
    [root@mongodb ~]# dnf makecache
    [root@mongodb ~]# dnf repolist
    

    CentOS 8服务器中安装了MongoDB yum存储库完成。

    2 CentOS 8中为MongoDB设置资源限制

    [root@mongodb ~]# vi /etc/security/limits.d/mongod.conf
    

    添加以下资源限制

    mongod soft nproc 64000
    mongod hard nproc 64000
    mongod soft nofile 64000
    mongod hard nofile 64000
    

    3 在CentOS 8上安装MongoDB数据库

    使用dnf命令安装MongoDB服务器的最新稳定版本

    [root@mongodb ~]# dnf list -y mongodb-org
    [root@mongodb ~]# dnf install -y mongodb-org
    

    启用并启动MongoDB数据库服务

    [root@mongodb ~]# systemctl enable --now mongod.service
    

    成功启动后,检查MongoDB的服务状态和端口监听信息

    [root@mongodb ~]# systemctl status mongod.service
    [root@mongodb ~]# netstat -anplt| grep mongod
    

    4 CentOS 8上为MongoDB创建SELinux策略

    根据MongoDB文档,如果您已将SELinux配置为强制模式,则必须为MongoDB创建SELinux策略。
    检查当前的SELinux模式。

    [root@mongodb ~]# getenforce
    Enforcing
    

    我们需要checkpolicy命令来验证自定义SELinux策略,因此我们正在使用dnf命令安装checkpolicy软件包。

    [root@mongodb ~]#dnf install -y checkpolicy
    

    创建一个定制的SELinux策略文件。

    [root@mongodb ~]# vi mongodb_cgroup_memory.te
    

    并在其中添加以下指令

    module mongodb_cgroup_memory 1.0;
    
    require {
        type cgroup_t;
        type mongod_t;
        class dir search;
        class file { getattr open read };
    }
    
    #============= mongod_t ==============
    allow mongod_t cgroup_t:dir search;
    allow mongod_t cgroup_t:file { getattr open read };
    

    编译并应用此SELinux策略。

    [root@mongodb ~]# checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te
    [root@mongodb ~]# semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod
    [root@mongodb ~]# semodule -i mongodb_cgroup_memory.pp
    

    5 MongoDB中创建管理员用户

    默认情况下,MongoDB服务器中未启用访问控制,因此任何人都可以访问MongoDB服务器并执行管理操作。

    因此,非常重要的是,我们创建一个Admin用户并在MongoDB服务器中启用访问控制。

    [root@mongodb ~]# mongo
    
    > use admin;
    switched to db admin
    > 
    
    db.createUser({
        user: "admin",
        pwd: "123456",
        roles: [ { role: "userAdminAnyDatabase",db: "admin" } ]
    })
    

    列出MongoDB数据库中的所有用户

    > show users
    

    MongoDB管理员用户已成功创建。
    从MongoDB Shell退出。

    > exit
    bye
    

    6 MongoDB服务器中启用访问控制

    要为MongoDB服务器启用访问控制,我们需要为mongod.service编辑systemd单元文件。

    [root@mongodb ~]# vi /usr/lib/systemd/system/mongod.service
    

    在此文件中找到以下行。

    Environment="OPTIONS=-f /etc/mongod.conf"
    

    并将其替换为以下行。

    Environment="OPTIONS=--auth -f /etc/mongod.conf"
    

    重新启动MongoDB服务以应用更改。

    [root@mongodb ~]# systemctl daemon-reload
    [root@mongodb ~]# systemctl restart mongod.service
    

    要检查访问控制,请连接MongoDB shell并执行一些管理命令。

    [root@mongodb ~]# mongo
    MongoDB shell version v4.4.2
    connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
    Implicit session: session { "id" : UUID("c2640def-e833-4bfc-93ae-e0e5ddea7712") }
    MongoDB server version: 4.4.2
    > use admin
    switched to db admin
    > show users
    uncaught exception: Error: command usersInfo requires authentication :
    _getErrorWithCode@src/mongo/shell/utils.js:25:13
    DB.prototype.getUsers@src/mongo/shell/db.js:1639:15
    shellHelper.show@src/mongo/shell/utils.js:914:9
    shellHelper@src/mongo/shell/utils.js:819:15
    @(shellhelp2):1:1
    
    
    > db.auth("admin",passwordPrompt())
    Enter password:   ###输入我们前面设置的是密码
    1
    
    
    > show users     #查询用户信息
    {
        "_id" : "admin.admin",
        "userId" : UUID("26d81b7b-f86a-4507-aa75-015cb0e02a11"),
        "user" : "admin",
        "db" : "admin",
        "roles" : [
            {
                "role" : "userAdminAnyDatabase",
                "db" : "admin"
            }
        ],
        "mechanisms" : [
            "SCRAM-SHA-1",
            "SCRAM-SHA-256"
        ]
    }
    > exit
    bye
    

    7 配置MongoDB服务以进行网络访问

    [root@mongodb ~]# cat /etc/mongod.conf | grep bind
      bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.binIpAll setting.
    [root@mongodb ~]# vi /etc/mongod.conf
    [root@mongodb ~]# netstat -anptl | grep mongod
    tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      931395/mongod       
    [root@mongodb ~]# systemctl restart mongod.service
    [root@mongodb ~]# netstat -anptl | grep mongod
    tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      931722/mongod       
    [root@mongodb ~]# 
    

    在此文件中找到bindIp指令并将其设置为。

    修改 bind_ip 127.0.0.1 为 bind_ip = 0.0.0.0 或者注释掉, #bind_ip 127.0.0.1, 让其监听所有外网ip。

    bindIp: 0.0.0.0
    

    重新启动MongoDB服务以应用更改。

    [root@mongodb ~]# systemctl restart mongod.service
    

    8 MongoDB数据和日志目录

    以下是两个目录,对MongoDB数据库管理员来说非常重要。

    • /var/lib/mongo-数据目录(默认)
    • /var/log/mongodb-日志目录(默认)

    我们可以通过在/etc/mongodb.conf文件中设置以下参数来自定义以上目录。

    • storage.dbPath-指定新的数据目录路径
    • systemLog.path-指定新的日志文件路径

    转载地址:https://www.cnblogs.com/lianglab/p/14157585.html

    相关文章

      网友评论

          本文标题:CentOS8安装MongoDB4

          本文链接:https://www.haomeiwen.com/subject/gkqerltx.html