1

我在 Google Cloud Platform App Engine 上部署了一个平均堆栈实例。我可以打开 ssh 隧道并从网络浏览器查看 rockmongo:http: //127.0.0.1 :8888/rockmongo/index.php?action=admin.index&host=0

我可以从 App Engine 使用 root 和默认密码登录。当我去添加一个新数据库时,它说它是成功的,但没有在列表中显示新数据库。我创建了一个新用户,它显示了该用户。当我通过命令登录到 mongo 时,我可以切换到我的新数据库,但是当我尝试查找集合中的所有项目时,我收到一个错误,即用户无权执行该操作。

db.getCollection('users').find({}) 错误:错误:{“ok”:0,“errmsg”:“未授权在 newdatabase 上执行命令 { find:\“users\”,过滤器:{} }”,“代码”:13 }

我将readWrite角色添加到用户并再次尝试,没有运气。当我做一个 db.getUser("username") 它返回“null”。

我错过了什么...

4

1 回答 1

1

想通了,我不得不:

以 root bitnami 用户身份登录

use admin
db.createUser( { user: "newusername",
                 pwd: "newpassword",
                 roles: [  "userAdminAnyDatabase","readWriteAnyDatabase" ]})

然后

use newdatabase
                   db.createUser(
      {
        user: "newuser",
        pwd: "newpassword",
        roles: [ { role: "readWrite", db: "newdatabase" } ]
      }
    )

然后错误消失了。因此,mongo 角色和权限的问题比 bitnami 和 rockmongo 更多。仍然不确定为什么 rockmongo 从未从 php 管理屏幕显示新数据库(所有这些都是通过 mongo 命令行完成的)。

于 2016-12-05T20:00:56.230 回答