Kubernetes中的PostgreSQL容器不使用POSTGRES_PASSWORD env

g6baxovj  于 2023-03-29  发布在  Kubernetes
关注(0)|答案(1)|浏览(142)

我有一个问题,创建容器与postgresql图像.下面是yaml.我已经成功地创建了容器与此配置,我可以进入这个数据库,但env POSTGRES_PASSWORD不工作.这意味着它可以进入这个数据库没有密码.
为什么会这样?有很多教程,但是使用这些教程创建的所有容器都没有实现密码信息
在细节上,我正在尝试这样的东西:

kubectl exec [POD_NAME] – psql -h localhost -U user --password -p 5432 postgres

不需要输入密码,但我想进入数据库只与密码
我成功地创建了容器,配置如下,我可以进入这个数据库,但env POSTGRES_PASSWORD不起作用。这意味着它可以进入这个数据库没有密码。但我设置密码使用:

- name: POSTGRES_PASSWORD

  value: user

这是我的山药

apiVersion: apps/v1    
    kind: Deployment
    metadata:
      name: example-postgres
      labels:
        app: example-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: example-app
      tier: postgres
  template:
    metadata:
      labels:
        app: example-app
        tier: postgres
    spec:
      containers:
        - image: postgres
          name: postgres
          env:

            - name: POSTGRES_DB
              value: postgres

            - name: POSTGRES_USER
              value: user

            - name: POSTGRES_PASSWORD
              value: user

            - name: PGDATA
              value: /var/lib/postgresql/data/pgdata

          ports:
            - containerPort: 5432
              name: postgres

apiVersion: v1
kind: Service
metadata:
  name: example-postgres
  labels:
    app: example-app
spec:
  ports:
    - port: 5432
  type: LoadBalancer
  selector:
    app: example-app
    tier: postgres

如何使容器在进入数据库之前检查密码?

kmpatx3s

kmpatx3s1#

要获取有关POSTGRES_PASSWORD变量的更多详细信息,请执行以下操作:
邮箱_密码
此环境变量是使用PostgreSQL映像所必需的。它不能为空或未定义。此环境变量设置PostgreSQL的超级用户密码。默认超级用户由POSTGRES_USER环境变量定义。
注1:**PostgreSQL镜像在本地设置了信任验证,因此您可能会注意到,从本地主机(同一容器内)连接时不需要密码。**但是,如果从不同的主机/容器连接,则需要密码。
注2:此变量定义PostgreSQL示例中的超级用户密码,由initdb脚本在初始容器启动时设置。它对psql客户端在运行时可能使用的PGPASSWORD环境变量没有影响,如https://www.postgresql.org/docs/14/libpq-envars.html所述。如果使用PGPASSWORD,将指定为单独的环境变量。
https://hub.docker.com/_/postgres/
我想你必须编辑数据库来改变设置。
也试试看这个链接:https://dba.stackexchange.com/a/126176

相关问题