Wil*_*ñez 5 postgresql google-compute-engine gcloud
尝试使用cloud_sql_proxy机制连接到 CloudSQL 实例时,我收到一个奇怪的 Err 400 缺少项目参数
我有一个带有可用 CloudSQL postgres 数据库的 GCE 项目,我在计算 api 上的应用程序可以使用它,我可以从我在 GCE 项目中配置的任何 VM 执行常规 psql。
但是,当我尝试使用 cloud_sql_proxy 从我的笔记本电脑连接到数据库时,我收到了这个奇怪的错误。
我正在按照本文档的说明进行操作:https : //cloud.google.com/sql/docs/postgres/connect-admin-proxy#install
因此,按照该文档,我有:
{
"type": "service_account",
"project_id": "my-proyect-21432",
"private_key_id": "<hidden intentionally>",
"private_key": "<hidden intentionally>",
"client_email": "cloudsql-serviceaccount@my-proyect-21432.iam.gserviceaccount.com",
"client_id": "<hidden intentionally>",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudsql-serviceaccount@my-proyect-21432.iam.gserviceaccount.com"
}
Run Code Online (Sandbox Code Playgroud)
user@hostname:~$ ./cloud_sql_proxy -instances=db1=tcp:15432 -credential_file=my-proyect-21432.json
2019/05/29 10:17:25 Rlimits for file descriptors set to {&{8500 65536}}
2019/05/29 10:17:25 using credential file for authentication; email=cloudsql-serviceaccount@my-proyect-21432.iam.gserviceaccount.com
2019/05/29 10:17:25 Listening on 127.0.0.1:15432 for db1
2019/05/29 10:17:25 Ready for new connections
Run Code Online (Sandbox Code Playgroud)
psql "host=127.0.0.1 port=15432 sslmode=disable dbname=db1 user=dbuser"
Run Code Online (Sandbox Code Playgroud)
我在cloud_sql_proxy上看到以下错误:
2019/05/29 10:17:33 New connection for "db1"
2019/05/29 10:17:34 couldn't connect to "db1": googleapi: Error 400: Missing parameter: project., required
Run Code Online (Sandbox Code Playgroud)
在客户端,我得到:
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Run Code Online (Sandbox Code Playgroud)
在这一点上,我应该成功连接我的psql客户端,但我在网上或谷歌的文档中找不到任何关于此错误的信息
我不知道我需要在哪里设置项目参数,我尝试了一些疯狂的地方,比如在 psql 端使用-v或使用 url 与? 在没有运气结束,我也尝试过使用的cloud_sql_proxy侧-projects标志,也没有运气。
我想我已经接近解决这个问题了,我做的第一个设置(如上所述)是在我在家使用的 Windows 电脑上,今天我在办公室,我决定使用 macos 复制所有这些,我不要认为操作系统根本不重要,有趣的是我复制了所有内容并创建了一个让我前进的小东西
所以,我再次开始并执行点 1., 2., 3., 4. 然后等待?文档指出实例字符串如下:myproject:us-central1:myinstance不是我最初写的,所以我改变了它并开始出现更合理的错误:
我开始cloud_sql_proxy与psql建立连接并得到这个:
user@hostname:~$ ./cloud_sql_proxy -instances=my-proyect-21432:us-east1:db1=tcp:15432 -credential_file=my-proyect-21432.json
2019/05/30 14:13:25 Rlimits for file descriptors set to {&{8500 65536}}
2019/05/30 14:13:25 using credential file for authentication; email=cloudsql-serviceaccount@my-proyect-21432.iam.gserviceaccount.com
2019/05/30 14:13:25 Listening on 127.0.0.1:15432 for db1
2019/05/30 14:13:25 Ready for new connections
<< when I run psql>>
2019/05/30 14:14:08 New connection for "my-proyect-21432:us-east1:db1"
2019/05/30 14:15:24 couldn't connect to "my-proyect-21432:us-east1:db1": dial tcp 10.26.112.3:3307: connect: operation timed out
Run Code Online (Sandbox Code Playgroud)
我的 db1 实例只有私有 IP 10.26.112.3
我开始在互联网上寻找该错误,并找到了一个允许传入流量到 3307 端口的建议:
无法通过 Cloud Shell By Proxy 通过 Cloud SQL 代理连接 https://github.com/GoogleCloudPlatform/cloudsql-proxy/issues/164
所以我添加了以下规则:
allow-cloudsqlproxy | Ingress | Apply to all | IP Ranges 0.0.0.0/0 | tcp,udp 3307 | allow | default | 1000
Run Code Online (Sandbox Code Playgroud)
但这没有任何区别,因为在那之后我仍然收到相同的错误消息:(
我在该项目上创建了一个 VM 并复制了所有这些,我能够连接,端口 3307 消息上没有拒绝连接。
我不知道是谁在阻止那条交通……
感谢您向我们通报您的最新发现。我遇到了同样的问题。我刚刚解决了它\xe2\x80\x94你的第一次编辑给了我提示。
\n\n在遵循 google CloudSQL 文档流程从外部应用程序连接到 CloudSQL 时,我启动了代理,如下所示:
\n\n`./cloud_sql_proxy -instances=<instance_name>=tcp:5433`\n
Run Code Online (Sandbox Code Playgroud)\n\n它不让我连接。我收到这个错误
\n\n`couldn\'t connect to "xxxxxxx": googleapi: Error 400: Missing parameter: project., required`\n
Run Code Online (Sandbox Code Playgroud)\n\n阅读您的编辑后,我修改了命令以使用实例详细信息页面上所述的整个实例名称,并且它有效。这是让它工作的新命令。
\n\n`./cloud_sql_proxy -instances=myproject:us-central1:instancename=tcp:5433`\n
Run Code Online (Sandbox Code Playgroud)\n\n我希望这可以为某人节省几个小时。
\n好吧,显然,如果您的数据库实例只有一个私有 IP地址,则cloud_sql_proxy不起作用,我必须添加一个公共 IP 地址,以便代理服务器可以访问我的实例。
\n\n我了解某些限制,但如果 Google 提供cloud_sql_proxy它应该支持所有客户案例,我的意思是,我\xc2\xb4m 使用默认网络,该网络由 google 管理,网络应该允许代理服务器以某种方式到达我的数据库实例.. 我不知道 ...
\n\n我在它开始工作的那一刻添加了公共IP ...但老实说,我不希望我的数据库实例上有公共IP。
\n 归档时间: |
|
查看次数: |
1108 次 |
最近记录: |