如何在 OpenShift Online 3 Dev Preview 中通过 shell 与 MongoDB 交互?

How to interact with MongoDB via shell in OpenShift Online 3 Dev Preview?

我有多个应用程序问题,我怀疑这些问题与数据库权限有关。

然而,一切似乎都已锁定,我无法完成基本命令,例如 show dbs 以进一步解决问题以及 "see" 我正在处理的问题。我已经坚持了两天了,这真的很令人沮丧。

我已经在在线控制台和本地终端上尝试过此操作,无论是否在登录时提供用户凭据:

在线控制台

Console > MongoDB Service > Deployment > Pod > mongodb-1-vs19d > Terminal:

sh-4.2$ mongo                                                                   
MongoDB shell version: 2.6.9                                                    
connecting to: test                                                             
> show dbs                                                                      
2016-07-13T04:33:10.809-0400 listDatabases failed:{                             
        "ok" : 0,                                                               
        "errmsg" : "not authorized on admin to execute command { listDatabases: 
1.0 }",                                                                         
        "code" : 13                                                             
} at src/mongo/shell/mongo.js:47

本地终端

me@my-computer:~$ oc rsh mongodb-1-vs19d
sh-4.2$ mongo
MongoDB shell version: 2.6.9
connecting to: test
> show dbs
2016-07-13T04:35:06.449-0400 listDatabases failed:{
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
    "code" : 13
} at src/mongo/shell/mongo.js:47

具有用户凭据的本地终端

me@my-computer:~$ oc rsh mongodb-1-vs19d
sh-4.2$ mongo -u $MONGODB_USER -p $MONGODB_PASSWORD $MONGODB_DATABASE
MongoDB shell version: 2.6.9
connecting to: users
> show dbs
2016-07-13T04:51:39.127-0400 listDatabases failed:{
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
    "code" : 13
} at src/mongo/shell/mongo.js:47

疑难解答 envars 正确:

me@my-computer:~$ oc env pods mongodb-1-vs19d --list
# pods mongodb-1-vs19d, container mongodb
MONGODB_USER=admin
MONGODB_PASSWORD=secret
MONGODB_DATABASE=users
MONGODB_ADMIN_PASSWORD=very-secret

数据库是从本地终端创建的:

oc new-app mongodb-persistent -p MONGODB_USER=admin,MONGODB_PASSWORD=secret,MONGODB_ADMIN_PASSWORD=very-secret

根据官方文档:

https://docs.openshift.com/online/getting_started/beyond_the_basics.html#btb-provisioning-a-database

https://docs.openshift.com/online/using_images/db_images/mongodb.html#running-mongodb-commands-in-containers

您似乎正在尝试 show dbs 作为未被授予所需角色的用户。您可以尝试将自己验证为 admin,如下所示:

mongo -u admin -p $MONGODB_ADMIN_PASSWORD admin

那么你应该能够 show dbsshow usersuse 其他数据库并在那里显示用户等...


您的 $MONGODB_USER 被命名为 admin 有点令人困惑 - 此普通用户将有权访问 $MONGODB_DATABASE。另一个 admin has been created by the used image 最有可能。