Kubernetes(minikube)中的 Mongodb 身份验证失败

问题描述 投票:0回答:2

从下面的 minikube 部署创建 mongodb,我无法从命令行进行身份验证。

基本上我只想列出所有数据库,因为我怀疑与 mongo-express 的连接存在问题。

我使用

kubectl exec -it mongodb-deployment-6b46455744-gfkzw -- /bin/bash
,

执行到 pod 中

mongo
启动cli

db.auth("username", "password")
给出
MongoServerError: Authentication failed.

即使

printenv
给出

MONGO_INITDB_ROOT_PASSWORD=password
MONGO_INITDB_ROOT_USERNAME=username

有什么帮助吗?

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongodb-deployment
  labels:
    app: mongodb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      containers:
      - name: mongodb
        image: mongo
        ports:
        - containerPort: 27017
        env:
        - name: MONGO_INITDB_ROOT_USERNAME
          valueFrom:
            secretKeyRef:
              name: mongodb-secret
              key: mongo-root-username
        - name: MONGO_INITDB_ROOT_PASSWORD
          valueFrom: 
            secretKeyRef:
              name: mongodb-secret
              key: mongo-root-password
        - name: ME_CONFIG_MONGODB_ENABLE_ADMIN
          value: "true"
---
apiVersion: v1
kind: Service
metadata:
  name: mongodb-service
spec:
  selector:
    app: mongodb
  ports:
    - protocol: TCP
      port: 27017
      targetPort: 27017
mongodb kubernetes minikube
2个回答
1
投票

成功使用

进行连接
mongosh --port 27017  --authenticationDatabase \
    "admin" -u "myUserAdmin" -p

来自 https://docs.mongodb.com/manual/tutorial/authenticate-a-user/#std-label-authentication-auth-as-user 和 docker hub 页面。


0
投票

我也遇到了同样的问题。

就我而言,我正在使用启动命令,并且在部署之间我首先强制执行命令

mongod --bind_ip_all
。由于数据库是在没有
--auth
标志的持久卷中创建的,因此它没有创建必要的用户条目。

您需要删除持久卷(以及部署和 Pod)并从头开始重新创建。同时删除启动命令并让它启动脚本。仅当您可以接受丢失数据时才执行此操作。我猜你没有,所以去吧。

或者,如果您想保留数据,请使用 mongodb 打开 pod 的 shell,并按照文档手动添加用户 https://www.mongodb.com/docs/manual/reference/method/db.createUser/ 。由于之前尚未通过

--auth
标志启用身份验证,因此您应该能够在没有凭据的情况下登录。

© www.soinside.com 2019 - 2024. All rights reserved.