我有一个问题,创建容器与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
如何使容器在进入数据库之前检查密码?
1条答案
按热度按时间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