[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
使用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
根据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
默认情况下,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
要为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
[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
以下是两个目录,对MongoDB数据库管理员来说非常重要。
/var/lib/mongo-数据目录(默认) /var/log/mongodb-日志目录(默认)我们可以通过在/etc/mongodb.conf文件中设置以下参数来自定义以上目录。
storage.dbPath-指定新的数据目录路径 systemLog.path-指定新的日志文件路径转载地址:https://www.cnblogs.com/lianglab/p/14157585.html