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

13z8s7eq  于 2023-11-17  发布在  Go
关注(0)|答案(2)|浏览(273)

在下面的minikube部署中创建mongodb,无法通过命令行进行身份验证。
基本上,我只想列出所有数据库,因为我怀疑与mongo-express的连接存在问题。
我使用kubectl exec -it mongodb-deployment-6b46455744-gfkzw -- /bin/bash执行进入pod,
mongo以启动磁盘
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

wbrvyc0a

wbrvyc0a1#

设法连接使用

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页面。

eqoofvh9

eqoofvh92#

我也有同样的问题。
在我的例子中,我正在使用启动命令,并且在部署之间我首先强制执行命令mongod --bind_ip_all。由于数据库已在没有--auth标志的持久卷中创建,因此它没有创建必要的用户条目。
你要么需要删除你的持久卷(和部署和pod),并从头开始重新创建它.同时删除启动命令,让它初始化脚本.这样做,只有当你是确定与丢失数据.我猜你没有任何所以去吧.
或者,如果你想保留你的数据,用mongodb打开一个shell到你的pod,然后按照doc手动添加用户https://www.mongodb.com/docs/manual/reference/method/db.createUser/。由于之前没有通过--auth标志启用auth,你应该能够在没有凭据的情况下登录。

相关问题