如何在 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
您似乎正在尝试 show dbs
作为未被授予所需角色的用户。您可以尝试将自己验证为 admin
,如下所示:
mongo -u admin -p $MONGODB_ADMIN_PASSWORD admin
那么你应该能够 show dbs
、show users
、use
其他数据库并在那里显示用户等...
您的 $MONGODB_USER
被命名为 admin
有点令人困惑 - 此普通用户将有权访问 $MONGODB_DATABASE
。另一个 admin
has been created by the used image 最有可能。
我有多个应用程序问题,我怀疑这些问题与数据库权限有关。
然而,一切似乎都已锁定,我无法完成基本命令,例如 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
您似乎正在尝试 show dbs
作为未被授予所需角色的用户。您可以尝试将自己验证为 admin
,如下所示:
mongo -u admin -p $MONGODB_ADMIN_PASSWORD admin
那么你应该能够 show dbs
、show users
、use
其他数据库并在那里显示用户等...
您的 $MONGODB_USER
被命名为 admin
有点令人困惑 - 此普通用户将有权访问 $MONGODB_DATABASE
。另一个 admin
has been created by the used image 最有可能。