在此博客中,我们讨论了一些数据库系统,其中最受欢迎的是MariaDB和MySQL,因为它们是Xampp或Lampp中通常包含的系统。 这次我们要谈的是 另一个系统是 MongoDB的。
MongoDB是 面向开源文档的NoSQL数据库系统, 这是 专为实现高性能数据持久性而设计的现代文档数据库管理系统, 基于NoSQL技术的高可用性以及自动扩展。
MongoDB不会像在关系数据库中那样将数据保存在表中,而是将数据结构保存在文档中,这是一种由字段和值对组成的数据结构(MongoDB文档可与JSON对象媲美)。
由于它具有高性能和出色的可伸缩性,因此被用于构建需要功能强大,关键任务和高可用性数据库的现代应用程序。
在Ubuntu上安装MongoDB
要在我们的系统上安装此数据库系统, 我们只需要打开一个终端并在其中执行以下命令即可:
sudo apt install mongodb
安装完成, MongoDB服务将通过systemd自动启动 并且该过程将在端口27017上运行。您可以使用以下命令检查其状态:
sudo systemctl status mongodb
如果没有,我们可以使用以下命令强制启动:
sudo systemctl start mongodb
启用与MongoDB的远程连接
默认情况下,MongoDB数据库系统使用端口27017,我们必须打开该端口 为了接受远程连接,我们仅使用以下命令启用它。
sudo ufw allow 27017
默认情况下,只能从本地地址27017访问端口127.0.0.1。 要允许远程连接到MongoDB,必须在文件中添加服务器的IP地址。 /etc/mongodb.conf
只需使用以下命令进行编辑:
sudo nano
我们可以看到类似以下内容:
bind_ip = 127.0.0.1, your_server_ip #port = 27,017
我们使用服务器中的数据进行编辑。
允许从任何地方访问MongoDB,它提供了对数据库中数据的无限制访问。 因此,最好允许访问MongoDB端口的特定于位置的默认IP地址。
sudo ufw allow from your_server_IP/32 to any port 27017 sudo ufw status
完成此操作后,足以重新启动服务,以便在开始时加载新更改,我们可以这样操作:
sudo systemctl restart mongodb
在MongoDB中使用密码创建用户
默认情况下,数据库具有非常简单的访问权限,因此,为了加强这一点,我们可以使用密码创建用户。
MongoDB使用SCRAM身份验证机制 默认。 在系统上使用SCRAM可以根据用户名,密码和身份验证数据库来验证提供的用户凭据。
只需使用以下命令启动数据库控制台:
Mongo
我们可以使用以下方法列出现有数据库:
show dbs
我们可以创建一个允许我们管理用户和功能的用户 例如创建用户,授予或撤消用户角色,以及创建或修改海关角色。
只需输入
use admin
然后使用以下命令创建用户,我们以我们认为适当的访问凭据替换用户“ root”的名称和密码“ password”。
db.createUser({user:"root", pwd:"password", roles:[{role:"root", db:"admin"}]})
完成此操作后,我们必须启用身份验证方法 为此,我们将编辑以下文件:
sudo nano /lib/systemd/system/mongodb.service
我们将寻找下一行:
ExecStart=/usr/bin/mongod --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS
和 编辑,使其如下所示:
ExecStart=/usr/bin/mongod --auth --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS
现在 我们只是在数据库中重启
systemctl daemon-reload sudo systemctl restart mongodb sudo systemctl status mongodb
Y 我们使用以下方法测试身份验证方法:
mongo -u "usuario" -p --authenticationDatabase "contraseña"
帮我解决这个错误。
2021-03-24T21:33:16.233 + 0000 E查询[thread1]错误:listDatabases失败:{
«确定»:0,
“ Errmsg”:“未经管理员授权执行命令{listDatabases:1.0,$ db:\” admin \“}”,
“代码”:13
“ CodeName”:“未经授权”
}:
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:65:1
shellHelper.show@src/mongo/shell/utils.js:816:19
shellHelper@src/mongo/shell/utils.js:706:15
@(shellhelp2):1:1