2017-08-13 49 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

是的。同樣的錯誤 –