早前自己的阿里云测试服务器,第一次用Robo 3T连接mongodb的时候,也出现过外网无法连接的问题,解决之后,不需要账户权限验证Robo 3T是可以连接,当然这是不安全的。

如之前记录的文章

centos7服务器外网无法连接mongodb的解决方法

最近新的服务器,同样照上面文档安装配置,发现连接的时候出现Error: Failed to execute “listdatabases错误了,如图:

浏览器运行http://xx.xxx.xxx.xx:27017/  说明外网可以访问了。

It looks like you are trying to access MongoDB over HTTP on the native driver port。

最后网上查了一下资料,说原因是因为没有指定数据库的登录权限,在使用图形界面软件连接的时候,需要账户和密码的,这也是当然的,为了安全性。

那就先创建个用户,也安全一点,先用mongo连接数据库

1、创建管理员用户

use admin

db.createUser({user:"admin", pwd: "123456", roles: ["root"]})

db.auth("admin", "123456") 

由于admin用户是root超级权限,用这个账户就可以访问所有数据库了。

2、添加数据库用户

比如自己的数据库叫mall
use mall

db.createUser({user: "name", pwd: "123456", roles: [{ role: "dbOwner", db: "mall" }]})
dbOwner:表示在当前数据库中可以执行任意操作

如图所示,这样连接就可以成功了。

在此简单记录一下。