资讯

展开

CentOS8安装MongoDB4

作者:快盘下载 人气:
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

加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!