mysql - Kubernetes部署后无法访问mysql root或用户
问题描述
我有一个作为服务运行的 nodejs 应用程序,它需要访问作为另一个服务(相同的命名空间)运行的 mysql 数据库。
我还有一个 mysql 文件,我将把它导入数据库。
这是我的工作流程:
设置一个 Secret,其中包含 root 密码以及新的数据库凭据(db_name、db_user、db_password)。
使用 SQL 脚本设置 ConfigMap 以创建数据库结构。
最后用pv/pvc部署mysql,yaml文件内容如下:
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.6
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secrets
key: DB_ROOT
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: mysql-secrets
key: DB_NAME
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: mysql-secrets
key: DB_USER
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secrets
key: DB_PASS
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
- name: mysql-initdb
mountPath: /docker-entrypoint-initdb.d
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
- name: mysql-initdb
configMap:
name: mysql-initdb-config
因为我的 nodejs 应用程序不访问数据库,所以我想验证是否已创建新数据库并导入 sql 文件,kubectl exec
然后运行mysql -u root -p
给我这个错误:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
在 pod 中,runningecho $MYSQL_ROOT_PASSWORD
或任何其他环境变量返回正确的值。
我究竟做错了什么 ?
解决方案
通过编辑行解决了这个问题:mountPath: /var/lib/mysql
我将其更改为/mnt/data
,部署就像一个魅力。
推荐阅读
- qt - 在由布局管理的项目上检测到的锚点。这是未定义的行为;改用 Layout.alignment
- json - 从spark中的json中的数组中提取Json
- c# - “Win32_CDROMDrive”类的“SerialNumber”属性如何在与 WMI 分开请求时返回 null?
- javascript - 使用 Bambora 捕获付款交易时出现“未找到交易”
- python-3.x - 如何将父构造函数的功能继承到子构造函数中
- matlab - MATLAB App - 在创建组件之前添加路径
- jquery - 带分页的 jQuery 数据表
- java - JavaFX ScrollPane 禁用箭头键滚动
- javascript - 调用异步函数
- javascript - 如何将外部javascript文件添加到目录中的所有html文件中?