【发布时间】: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/CentOSsystemctl 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