即使我将GCE实例的公共IP(外部IP)添加为授权网络,也无法从GCE连接Google Cloud SQL。当我将“0.0.0.0”添加到授权网络时,它可以工作。显然我不想这样做。授权的网络设置可能是原因。但我找不到它。有谁知道这件事。
我正在使用Google Cloud SQL版本2测试版。我正在尝试从GCP云控制台连接。虽然可能没有必要,但我将外部IP设置从短暂更改为静态,但它不起作用。
mysql -u root -p -h xxxx <--- I can login normally if I add "0.0.0.0" into authorized network.
我已经仔细检查了同样的问题..
1. Ensure your Cloud SQL instance has an IPv4 address.
2. Find out the public IP address of your GCE instance and add it as an authorized network on your Cloud SQL instance.
3. Add a MySQL username and password for your instance with remote access.
4. When connecting from GCE use you standard MySQL connection system (e.g. mysqli_connect) with the username and password you just set up, connecting to the IPv4 address of your Cloud SQL instance.
编辑1
我注意到了这个描述。
注意:使用Cloud SQL Proxy从Compute Engine连接到Cloud SQL目前仅适用于Cloud SQL Second Generation实例。
https://cloud.google.com/sql/docs/compute-engine-access
这是否意味着我必须使用代理..?
编辑2
$ mysql -u root -p -h (Cloud SQL Instance's IP)
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '(Cloud SQL Instance's IP)' (110)
编辑3
这是否意味着我必须使用代理..?
根据Vadim所说的官方文档,Cloud SQL Proxy似乎是可选的,但它在安全性,灵活性和价格方面听起来更好。 (静态IP将被收费。但是,代理设置对我来说可能很复杂..)
https://cloud.google.com/sql/docs/compute-engine-access
如果要连接到Cloud SQL First Generation实例,则必须使用其IP地址进行连接。但是,如果您使用的是Cloud SQL Second Generation实例,则还可以使用Cloud SQL Proxy或Cloud SQL Proxy Docker映像。
编辑4
我找到了原因......我很蠢......我尝试从Google Cloud Shell连接,但这不是我的gce实例。当我尝试从我的gce实例连接时,它可以工作。
答案 0 :(得分:1)
您是否在授权网络下添加了GCE VM的公共IP?
从你的帖子:
2. Find out the public IP address of your GCE instance and add it as an authorized network on your Cloud SQL instance.
官方文档在这里: https://cloud.google.com/sql/docs/external#appaccessIP