当前位置: 首页 > 知识库问答 >
问题:

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

欧阳勇军
2023-03-14

我有以下部署,用于放置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端口后连接到实例,按照此处的说明进行操作,但收到错误:

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

我的设置与这里基本相同,只是我在minikube而不是GCP中运行集群。我的本地MySQL没有运行,所以我假设没有发生冲突的可能性。

共有1个答案

曹智
2023-03-14

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

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

如果你不这样做,mysql默认使用本地linux套接字连接到他的服务器: /var/run/mysqld/mysqld.sock。

更新:由于Gabriel检查-添加-协议tcp终于使其工作,所以我将其添加到我的答案中

 类似资料:
  • 我有一个声纳配置,看起来像这样: 当从我的gradle脚本运行这个时,它看起来像这样: 应该添加到上面的sonarproperties中。

  • 我正在尝试连接到MySQL服务器,但出现无法处理的错误。 java.sql.SQLNonTransientConnectionException:无法创建到数据库服务器的连接。尝试重新连接3次。放弃。com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)com.mysql.cj.jdbc.excepti

  • 我在运行Ubuntu服务器14.04的服务器上安装了PostgreSQL 9.3。 在服务器上运行时,我得到(我猜是相关部分):

  • 每当我将dovecot配置更改为使用993 IMAPS端口而不是标准的143 IMAP,roundcube都拒绝使用ErrorMessage: 连接到存储服务器失败。服务器错误:无法连接到本地主机:143:连接被拒绝 Roundcube版本: 我们将不胜感激。

  • 在运行< code>Cassandra命令,然后尝试在另一个命令提示符窗口中运行< code>cqlsh后,我收到了此错误。你能让我知道如何解决这个问题吗? 连接错误:('无法连接到任何服务器',{'127.0.0.1':错误(10061,"尝试连接到[('127.0.0.1',9042)]。最后一个错误:无法进行连接,因为目标机器主动拒绝它")})

  • 例外情况是: docker-compose文件是: 多克菲乌勒