我有以下部署,它提出了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没有运行,所以我认为不存在冲突的可能性。
答案 0 :(得分:3)
端口转发可能存在,但你需要告诉mysql客户端使用主机/端口连接而不是unix socket(默认)
mysql --host=localhost --protocol tcp --port=3306 -u root -p
如果你不这样做,mysql默认使用本地linux套接字连接到服务器:/var/run/mysqld/mysqld.sock ..它甚至会告诉你;)
更新:正如加布里尔检查的那样 - 添加--protocol tcp
终于使其有效,所以我将其添加到我的回答中