gpt4 book ai didi

mysql - 无法连接到运行 MySQL 的端口转发 Pod

转载 作者:行者123 更新时间:2023-11-29 04:05:26 26 4
gpt4 key购买 nike

我有以下放置 MySQL 实例的部署:

kind: Deployment
apiVersion: apps/v1beta1
metadata:
name: mysql
spec:
replicas: 1
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:8
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-root-password
key: password

密码只是 root :

kind: Secret
apiVersion: v1
metadata:
name: mysql-root-password
type: Opaque
data:
password: cm9vdA==

问题是我按照 here 中的说明,在端口转发 MySQL 端口后尝试连接到实例。 ,却报错:

$ kubectl port-forward mysql-824284009-rpbpk 3306
Forwarding from 127.0.0.1:3306 -> 3306
Forwarding from [::1]:3306 -> 3306

# from another terminal
$ mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

从 pod 本身连接到服务器是可行的:

$ kubectl exec -it mysql-824284009-rpbpk -- /bin/bash
root@mysql-824284009-rpbpk:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
...
mysql>

我的设置与 here 基本相同,除了我在 minikube 而不是 GCP 中运行集群。我的本地 MySQL 没有运行,所以我认为不会发生冲突。

最佳答案

可能存在端口转发,但您需要告诉 mysql 客户端使用主机/端口而不是 unix 套接字(默认)进行连接

mysql --host=localhost --protocol tcp --port=3306 -u root -p

如果你不这样做,默认情况下 mysql 使用本地 linux 套接字连接到他的服务器:/var/run/mysqld/mysqld.sock ..它甚至告诉你 ;)

更新:正如 Gabriel 检查的那样 - 添加 --protocol tcp 终于让它工作了,所以我将它添加到我的答案中

关于mysql - 无法连接到运行 MySQL 的端口转发 Pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45659886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com