下面是“mongodb 3.4下远程连接认证失败的解决方法”的完整攻略。
问题描述
在使用mongodb 3.4版本进行远程连接时,可能会出现认证失败的情况。详细表现为,当使用用户名和密码进行远程连接时,会提示“Authentication failed”错误。
问题分析
一种可能的原因是,在mongodb 3.4中,启用了SCRAM-SHA-1身份验证机制,而之前的版本可能是使用了MONGODB-CR身份验证机制。因此,可能需要设置用户名和密码的方式。
解决方案
在mongodb 3.4版本中,需要经过一些设置才能使远程认证成功,操作步骤如下:
步骤1:添加管理员用户
在使用mongodb 3.4版本进行远程连接时,需要先添加管理员用户,以确保能够远程认证成功。
具体操作是,在mongo shell中执行以下代码:
use admin
db.createUser(
{
user: "admin",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
其中,管理员用户名是admin,密码是password,roles参数指定了用户的角色为“userAdminAnyDatabase”,表示可以进行任意数据库的管理操作。
步骤2:设置bindIP和auth参数
在mongodb 3.4版本中,还需要设置bindIP和auth参数,才能确保可以远程认证成功。
具体操作是,在mongod.conf配置文件中,添加以下内容:
security:
authorization: enabled
net:
bindIp: 0.0.0.0
其中,security.authorization参数设置为enabled,表示启用认证机制;net.bindIp参数设置为0.0.0.0,表示允许任意IP进行连接。
步骤3:重启mongodb服务
在完成以上设置后,需要重启mongodb服务,才能使设置生效。
具体操作是,在命令行中执行以下命令:
sudo service mongod restart
示例说明
以下是两个具体的实例说明,来帮助理解如何进行上述设置。
示例1:在Ubuntu操作系统中设置bindIP和auth参数
- 使用文本编辑器打开mongod.conf配置文件:
sudo nano /etc/mongod.conf
- 在配置文件中,添加以下内容:
security:
authorization: enabled
net:
bindIp: 0.0.0.0
-
保存文件并关闭文本编辑器。
-
重启mongodb服务:
sudo service mongod restart
示例2:使用管理员用户进行远程连接
- 在mongod.conf配置文件中添加以下内容:
security:
authorization: enabled
net:
bindIp: 0.0.0.0
- 在mongo shell中添加管理员用户:
use admin
db.createUser(
{
user: "admin",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
- 重启mongodb服务:
sudo service mongod restart
- 在另一台主机上,使用管理员用户进行连接:
mongo --host [mongodb服务器的IP地址] -u admin -p password --authenticationDatabase admin
其中,[mongodb服务器的IP地址]为mongodb服务器的IP地址。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mongodb 3.4下远程连接认证失败的解决方法 - Python技术站