mongodb - mongo db的用户名和密码是什么
问题描述
我正在Windows 机器上的流浪构建裸机集群上做这个练习。
能够成功运行该应用程序。
但是我无法连接到数据库以查看数据,例如来自 mongo db compass。
用户 ID 或密码应该是什么?
经过一番研究,我使用以下步骤进入 mongo 容器并验证数据。但我想使用像指南针这样的客户端连接到数据库。
使用以下命令查找 mongo db 后端数据库 pod 的部署位置。
vagrant@kmasterNew:~/GuestBookMonog$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
frontend-848d88c7c-95db6 1/1 Running 0 4m51s 192.168.55.11 kworkernew2 <none> <none>
mongo-75f59d57f4-klmm6 1/1 Running 0 4m54s 192.168.55.10 kworkernew2 <none> <none>
然后 ssh 进入该节点并执行
docker container ls
找到 mongo db 容器
它看起来像这样。我删除了不相关的数据。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ba3d05168ca dc77715107a9 "docker-entrypoint.s…" 53 minutes ago Up 53 minutes k8s_mongo_mongo-75f59d57f4-5tw5b_default_eeddf81b-8dde-4c3e-8505-e08229f97c8b_0
来自SO的参考
docker exec -it 1ba3d05168ca bash
在这种情况下来自SO的另一个参考
mongo
show dbs
use guestbook
show collections
db.messages.find()
最后我能够验证数据
> db.messages.find()
{ "_id" : ObjectId("6097f6c28088bc17f61bdc32"), "message" : ",message1" }
{ "_id" : ObjectId("6097f6c58088bc17f61bdc33"), "message" : ",message1,message2" }
但问题是如何从 mongo db compass 中查看这些数据?我正在使用 NodePort 类型公开前端和后端服务。你可以在下面看到它们。
以下是我从上述示例中获得的部署的 k8s 清单文件。
前端部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
labels:
app.kubernetes.io/name: guestbook
app.kubernetes.io/component: frontend
spec:
selector:
matchLabels:
app.kubernetes.io/name: guestbook
app.kubernetes.io/component: frontend
replicas: 1
template:
metadata:
labels:
app.kubernetes.io/name: guestbook
app.kubernetes.io/component: frontend
spec:
containers:
- name: guestbook
image: paulczar/gb-frontend:v5
# image: gcr.io/google-samples/gb-frontend:v4
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: GET_HOSTS_FROM
value: dns
ports:
- containerPort: 80
前端服务。
apiVersion: v1
kind: Service
metadata:
name: frontend
labels:
app.kubernetes.io/name: guestbook
app.kubernetes.io/component: frontend
spec:
# if your cluster supports it, uncomment the following to automatically create
# an external load-balanced IP for the frontend service.
# type: LoadBalancer
type: NodePort
ports:
- port: 80
nodePort: 30038
# - targetPort: 80
# port: 80
# nodePort: 30008
selector:
app.kubernetes.io/name: guestbook
app.kubernetes.io/component: frontend
接下来是 mongo db 部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongo
labels:
app.kubernetes.io/name: mongo
app.kubernetes.io/component: backend
spec:
selector:
matchLabels:
app.kubernetes.io/name: mongo
app.kubernetes.io/component: backend
replicas: 1
template:
metadata:
labels:
app.kubernetes.io/name: mongo
app.kubernetes.io/component: backend
spec:
containers:
- name: mongo
image: mongo:4.2
args:
- --bind_ip
- 0.0.0.0
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 27017
最后是mongo服务
apiVersion: v1
kind: Service
metadata:
name: mongo
labels:
app.kubernetes.io/name: mongo
app.kubernetes.io/component: backend
spec:
ports:
- port: 27017
targetPort: 27017
nodePort: 30068
type: NodePort
selector:
app.kubernetes.io/name: mongo
app.kubernetes.io/component: backend
解决方案
简短的回答:没有。
长答案:您正在使用该mongo
图像,您可以在https://hub.docker.com/_/mongo上提取自述文件。这表明默认情况下禁用身份验证,必须通过--auth
命令行参数手动启用。这样做时,您可以通过环境变量指定初始身份验证配置,然后在引用的 .d/ 文件夹中指定更复杂的内容。
推荐阅读
- compilation - GLib:替换已弃用的 g_tree_traverse() 函数?
- java - 异步调用 API java
- java - 容器未显示在 JScrollPane 中
- ios - 如何在 SiriusObfuscator 中给出路径?
- javascript - 我的 headerStyle 不起作用。我尝试分配背景颜色,但运行时它没有出现
- amazon-web-services - 从 AWS 组织导出所有 IAM 用户、角色和策略
- docker-compose - docker-compose:如何将秘密传递给logstash中的环境变量?
- blazor - FxCop Analyzers 是否适用于 blazor 项目?
- java - 没有 Thread.sleep 死锁实现不起作用
- search - Vim 在整个项目中查找和替换多行