【问题标题】:can I connect to MySQL on a GCP CE VM instance from Windows MySQL Workbench?我可以从 Windows MySQL Workbench 连接到 GCP CE VM 实例上的 MySQL 吗?
【发布时间】:2021-07-02 02:28:55
【问题描述】:

正如标题所暗示的,我希望从我的 Windows 笔记本电脑连接到一个 GCP VM 实例,其中运行 mysql。数据库工作正常,如果我从他们的云连接进入一个 ssh 客户端,我可以直接使用 mysql 客户端并查询数据库。

我想使用本地 Windows MySQL Workbench 应用程序,并且能够执行查询,就像我在将其移植到 GCP 之前构建的本地主机版本中所做的那样。

如何执行此操作(无需订阅 GCP Cloud SQL)并附加到我的 VM 实例的 sql?

/////////////////////////////////////// 根据约翰的评论,这是我的净统计输出:

netstat -tlnp | grep 3306
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      17007/mysqld    

而且 3306 确实在 mysql 的端口列表中:

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
1 row in set (0.01 sec)

所以我的结论是我需要打开端口?

@约翰:

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1669/mysqld   

NAME         NETWORK  DIRECTION  PRIORITY  ALLOW     DENY  DISABLED
mysqlaccess  default  INGRESS    1000      tcp:3306        False

从我的笔记本电脑对端口进行 Telnet 测试:

C:\Users\fumanchu>telnet x.x.x.x 3306
[                                                                                                                        5.7.33-0ubuntu0.16.04.1zzzzzzzz}<[:X'mysql_native_password

Connection to host lost.

尝试从 MySQL Workbench 使用 GUI:

显示我的 VPC 条目的添加控制台 GCP 日志在那里:

mysqlaccess
Ingress
Apply to all    
IP ranges: 0.0.0.0/0
tcp:3306
Allow
1000
Off —   —   

【问题讨论】:

  • 第一步是确定 MySQL 是否设置了连接。运行此命令并将输出放入您的问题中:netstat -tlnp | grep 3306。如果没有出现,请登录 MySQL 并运行以下命令:SHOW GLOBAL VARIABLES LIKE 'PORT';,然后再次尝试将3306 替换为正确的端口号。 MySQL 可能被配置为仅侦听到 localhost 或来自所有接口的连接。您需要本地监听地址类似于0.0.0.0:3306。然后配置 VPC 防火墙规则,允许来自您的 IP 地址的外部连接。
  • MySQL 正在监听 localhost (127.0.0.1)。您必须将my.cnf 配置为侦听所有接口。打开 my.cnf 并找到 bind-address 行。更改为0.0.0.0。重启MySQL,重复命令netstat -tlnp | grep 3306,验证本地监听地址为0.0.0.0:3306。然后创建 VPC 防火墙规则。重新启动 MySQL 是特定于操作系统的。对于最新版本的 Ubuntu/Debian/CentOS systemctl restart mysqld。对于某些系统service mysqld restart.
  • @JohnHanley,所以我正在削减它......我已经按照你说的做了,实际上 netstat 现在反映了 0.0.0.0。我也有一个 VPC 防火墙设置。在帖子的编辑中更新。剩下的是从 windows MySQL Workbench 到 GCP VM 的连接,这似乎仍然不喜欢连接。
  • 要从 Workbench 连接,您需要 VM 的公共外部 IP 地址(在 Google Cloud Console 中查找 VM)、MySQL 端口号、用户名和密码。我假设您没有在 MySQL 上设置 SSL。如果您有问题,请使用 VM IP 地址、防火墙规则设置等详细信息编辑您的问题。屏蔽 IP 地址,以便我们看不到它。
  • @JohnHanley,按照您的建议发布。

标签: mysql google-cloud-platform mysql-workbench


【解决方案1】:

如果你可以通过 ssh 连接。

改变连接方式

您可以在此处输入与之前的 ssh 连接中相同的数据

【讨论】:

    【解决方案2】:

    根据@JohnHanley,这里是我的问题和步骤的摘要:

    1. 使用本地 pc 数据库获取 mysql 工作台的工作设置。这可确保您拥有数据库,并且与本地计算机的连接正常工作。
    2. 将数据库导出到远程系统,在我的情况下是 GCE linux VM(我使用的是 ubuntu)导出数据库(基于 mysqldump)有许多简单的步骤可以执行
    3. 确保 linux vm 有 mysql 服务器和客户端设置,并导入 db
    4. 现在设置 ssh 连接:
    5. 确保 linux vm 上的端口 3306 已打开,方法是转到您的 vm/项目的 VPC 服务,并确保端口已打开,或添加规则以公开端口 3306 入口。
    6. 通过使用 GCE 控制台并连接到实例来连接到虚拟机(您应该在第 3 步之前已经完成此操作)。这也可以确保您在 pc 上创建了用于 ssh 的本地文件。 (~/.ssh/google_compute_*)
    7. 从您的电脑连接到虚拟机。使用 gcloud 控制台工具检查下一步。如果您还没有使用 gcloud 控制台工具,请安装它们,打开命令/powershell 窗口。
    8. 键入“gcloud compute ssh”实例名称“。如果这样连接,您现在知道您已为 ssh 正确配置服务器,并接受外部请求。
    9. 然后设置 mysql 工作台与 gcloud ssh 请求的设置相同...它可以使用相同的凭据和脚本,帮助文件存在于我引用的上述 /.ssh/ 文件夹中。

    【讨论】:

      猜你喜欢
      • 2013-06-18
      • 1970-01-01
      • 2021-07-21
      • 2013-11-03
      • 2013-05-05
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 2016-08-31
      相关资源
      最近更新 更多