当我尝试连接caught error @ main Error: connect ENOENT /cloudsql/<PROJECT ID>:us-central1:<DB NAME>/.s.PGSQL.5432
时,我收到此错误。这是我的typeorm配置文件的外观
const config2 = {
database: <DB NAME>,
entities: Object.values(entities),
host: '/cloudsql/<project id>:us-central1:<db name>',
extra: {
socketPath: '/cloudsql/<project id>:us-central1:<db name>',
},
password: ...,
port: 5432,
type: process.env.POSTGRES_CONNECTION as DatabaseType,
username: ...,
synchronize: false,
dropSchema:
process.env.NODE_ENV !== 'production' &&
process.env.POSTGRES_DROP_SCHEMA === 'true',
migrations: ['dist/migrations/*.js'],
migrationsRun: true,
cache: shouldCache(),
} as PostgresConnectionOptions;
我还尝试通过Postico 2中的连接URL进行连接,但收到错误Hostname not found.
我在我的谷歌项目中启用了云SQL API
2条答案
按热度按时间hlswsv351#
是否添加了网络?如果没有,postgres将不允许连接。
尝试使用“连接”。
83qze16e2#
要通过Postico连接到Google Cloud SQL示例,您需要使用可下载的
cloud_sql_proxy
可执行文件在15432
端口上通过SSH建立隧道。https://cloud.google.com/sql/docs/mysql/sql-proxy
您在终端中登录的用户需要以下IAM权限:
Service Account Admin
(或Service Account User
可能足够)如果不确定要将此IAM权限授予哪个用户,请运行:
gcloud config get account
一旦限制了这些权限,类似于此的命令将建立隧道(注意末尾的
&
,它是有目的的!)./cloud_sql_proxy -instances=<CONNECTION_NAME>:<DB_NAME>=tcp:15432 &
CONNECTION_NAME
可以在您的云控制台中的SQL〉'Connect to this instance'部分找到。现在隧道打开了,你应该可以连接到Postico内部。
为确保您的应用能够连接,您可能只需按照向本地用户分配服务帐户权限的方式向您的应用分配
Cloud SQL Client
IAM权限。希望这能有所帮助!