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

时间:2017-08-13 11:32:14

标签: mysql kubernetes

我有以下部署,它提出了MySQL实例:

select * 
from dbo.hello('2014-04-01', '2014-04-10');

密码只是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

问题是我按照here的说明尝试在端口转发MySQL端口后连接到实例,但出现错误:

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

从pod本身连接到服务器:

$ 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)

除了我在minikube中运行群集而不是GCP之外,我的设置与here基本相同。 我的本地MySQL没有运行,所以我认为不存在冲突的可能性。

1 个答案:

答案 0 :(得分:3)

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

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

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

更新:正如加布里尔检查的那样 - 添加--protocol tcp终于使其有效,所以我将其添加到我的回答中