2017-08-13 54 views
1

我有以下部署它架起MySQL实例:无法连接到端口转发的吊舱运行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== 

问题是我尝试连接到端口转发MySQL端口后的实例,遵循here的指示,但出现错误:

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

从吊舱本身连接到服务器的工作原理:

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

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

回答

3

端口转发可能存在,但你需要告诉MySQL客户端使用的主机/端口,而不是Unix套接字(默认)

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

如果不中,MySQL默认使用本地Linux连接套接字连接到服务器他:/var/run/mysqld/mysqld.sock。它甚至会告诉你这样)

更新:由于加布里埃尔检查 - 加入--protocol tcp终于取得它的作品,所以我addding它对我的回答

+0

尝试运行'mysql --host = localhost --port = 3306 -u root -p'但仍然出现错误。 –

+0

同样的错误? –

+0

是的。同样的错误 –