我嘗試在Kubernetes中設置mysql數據庫。我配置了一個ConfigMap來存儲數據庫名稱和一個包含用戶的root密碼,用戶和密碼的Secret。我得到一個「錯誤1045(28000):拒絕用戶'testadm'@'localhost'的訪問權限((在使用mysql cli的容器內部和從外部使用IntelliJ數據庫工具)使用密碼:是)「錯誤。當使用祕密密碼(訪問被拒絕)時,無法連接到Kubernetes中的mysql pod
我kubernetes.yaml文件:
apiVersion: v1
kind: ConfigMap
metadata:
name: db
data:
mysql-database: database
---
apiVersion: v1
kind: Secret
metadata:
name: db-credentials
type: Opaque
data:
mysql-root-password: VGVzdDEyMzQK # Test1234
mysql-user: dGVzdGFkbQo= # testadm
mysql-password: VGVzdDEyMzQK # Test1234
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: mysql
spec:
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
ports:
- containerPort: 3306
env:
- name: MYSQL_DATABASE
valueFrom:
configMapKeyRef:
name: db
key: mysql-database
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: mysql-root-password
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: db-credentials
key: mysql-user
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: mysql-password
如果我直接設置密碼,如連接下成功的容器內,並從外面!
env:
- name: MYSQL_ROOT_PASSWORD
value: Test1234
如果我檢查容器內的env變量,我不能發現兩種方法之間的區別。
是否有任何其他格式要求使用存儲在密碼中的密碼?我也試圖把在數據字典中的值加引號是這樣的:
data:
mysql-root-password: "VGVzdDEyMzQK"
版本信息
Docker 17.06.0-ce
Minikube 0.21.0
Kubectl Server 1.7.0
Kubectl Client 1.7.3
這並不解決問題。當我在容器內嘗試時,訪問也被拒絕。它也只發生在我使用我的K8S機密配置的密碼而不是直接配置env時。 –
更新了答案測試通過創建新的祕密 – sfgroups
謝謝!這也適用於我。有沒有什麼方法可以從yaml文件創建祕密? –