我最近一直在尝试设置一个计算引擎实例,用于托管我的一个项目的 SQL 数据库。问题是,每次我设置实例并安装好所有内容时,我在 Google 防火墙中打开的端口仍然处于关闭状态,我无法从外部连接到我的 SQL 服务器。
到目前为止,我已经做了以下事情,但都失败了:
- 使用
mysql-server
而不是mariadb-server
- 使用 Debian 8 代替 Ubuntu 16.04 LTS
- 创建允许所有入口流量的实例
所有这些都导致nmap
显示端口为closed
(以及我在创建实例时允许的端口 80 和 443),并且我本地计算机上的 MySQL 客户端无法连接到服务器。
我ufw
每次都已将其禁用,因此它应该不会引起任何问题。
答案1
我最终解决了这个问题 - Zeb 和我一起合作。这根本不是 GCP 的问题,它拒绝mysql
连接,因为在位于 的配置中默认bind-address
设置为。127.0.0.1
/etc/mysql/mysql.conf.d/mysqld.cnf
# Instead of skip-networking the default is now to listen only on`
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
# 127.0.0.1 previously, changed to allow remote connections
在配置中更改之后,mysql
正在监听,0.0.0.0:3306
如下图所示netstat -plutn
。
然后您需要添加具有访问权限的远程用户,然后这这篇文章完美地解释了这一点。
经过大量的挖掘,希望这可以为遇到此问题的任何人来说都澄清事实。