MongoDB是提供高性能,高可用性和自动缩放的NoSQL数据库。 NoSQL数据库意味着,与MySQL或PostgreSQL不同,它不支持SQL(结构化查询语言)来检索或操纵存储的数据。 MongoDB不会将数据存储在表中,而是将数据存储在类似于JSON的“文档”结构中(在MongoDB中称为BSON)。 MongoDB是六年前在2009年首次推出的。 目前由MongoDB MongoDB公司开发
在本教程中,我将指导您在CentOS 7服务器上安装和配置MongoDB 3.2(stable)。 我们将为MongoDB添加和配置管理员用户,并配置MongoDB服务的身份验证。
先决条件
- CentOS 7
- 根权限
我们将在本教程中做什么:
- 添加MongoDB存储库。
- 安装MongoDB。
- 修复一些MongoDB错误。
- 创建管理员用户。
- 启用MongoDB身份验证和测试。
第1步 - 在CentOS中添加MongoDB资源库
使用ssh root帐户连接到CentOS 7服务器:
ssh root@192.168.1.100
为了添加新的CentOS存储库,我们需要转到'yum.repos.d'目录。 转到该目录,并使用vim创建新的存储库文件“mongodb-org-3.2.repo”
cd /etc/yum.repos.d/
vim mongodb-org-3.2.repo
粘贴MongoDB存储库配置,如下所示:
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
保存文件并退出编辑器。
第2步 - 安装MongoDB
我们添加了MongoDB存储库,现在检查服务器上的存储库列表,以确保列表中的MongoDB存储库可用。
以root用户身份运行以下命令:
yum repolist
你可以看到下面的结果。 MongoDB存储库在列表中。
接下来,使用yum命令安装MongoDB。
yum -y install mongodb-org
安装完成后,使用这个systemctl命令启动MongoDB:
systemctl start mongod
通过检查端口'27017'是否打开,检查MongoDB是否正在运行。
netstat -plntu
并确保mongodb服务是活动的。
systemctl status mongod
第3步 - 修复MongoDB错误
MongoDB已安装。 现在我们可以使用以下命令访问mongodb shell:
mongo
您可能会在服务器上看到有关ulimit配置的错误。
** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000...
限制或用户限制定义用户可以使用多少系统范围的资源。
为了解决这个问题,我们需要增加用户mongod的ulimit配置。
在CentOS 7服务器上,MongoDB数据库运行在用户'mongod'下。 转到'security'目录并编辑'limits.conf'配置文件。
cd /etc/security/
vim limits.conf
我会将mongod用户的限制增加到“64000” - 进程数或nproc,打开文件数或nofile到64000。
将下面的新配置粘贴到文件的末尾:
mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000
保存limits.conf文件。
运行下面的sysctl命令将更改的限制应用于系统:
sysctl -p
然后重新启动MongoDB服务,然后重试访问mongo shell,错误现在已经消失了。
systemctl restart mongod
mongo
第4步 - 创建MongoDB管理员用户
在此步骤中,我们将为MongoDB创建一个新的用户“admin”,并从mongo shell中创建角色“UserAdminAnyDatabase”。
打开mongodb shell:
mongo
我将使用密码“admin123”创建名为“admin”的新用户管理员。 请在服务器上使用安全密码。 然后我们将用户的角色配置为“UserAdminAnyDatabase”。
切换到数据库'admin'。
use admin
键入以下MongoDB查询以创建新的管理员用户:
db.createUser(
{
user: "admin",
pwd: "admin123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
接下来,确保用户已经使用下面的MongoDB查询创建了。
show users
MongoDB管理员用户已创建。
第5步 - 在MongoDB中启用用户认证
在此步骤中,我们将启用用户身份验证,以防止没有足够权限的另一个用户能够查看数据库中的数据。
在我们的CentOS 7服务器上,MongoDB在“/etc/init.d/”目录下的systemd下运行init脚本。 我们将编辑该脚本以强制mongodb服务使用'--auth'选项运行。
转到'/etc/init.d/'目录并编辑“mongod”文件:
cd /etc/init.d/
vim mongod
在第15行,您将找到“OPTION”变量,我们将添加“mongod”选项。
OPTIONS=" --auth -f $CONFIGFILE"
保存文件。
重新加载systemd服务并重新启动MongoDB。
systemctl daemon-reload
systemctl restart mongod
接下来,我们必须通过登录到mongo shell并切换到admin数据库来测试配置,然后尝试看到管理员用户。
mongo
use admin
show users
您将在数据库管理员中看到有关未授权执行该命令的错误。 现在我们需要使用命令'db.auth()'进行身份验证。
db.auth('admin', 'admin123')
现在,您可以看到具有角色和权限的用户。
MongoDB 3.2已在CentOS 7服务器上安装和配置。