postgresql 从节点typeorm应用程序连接到谷歌云SQL postgres示例

1tu0hz3e  于 2023-02-08  发布在  PostgreSQL
关注(0)|答案(2)|浏览(173)

当我尝试连接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

hlswsv35

hlswsv351#

是否添加了网络?如果没有,postgres将不允许连接。

尝试使用“连接”。

83qze16e

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权限。
希望这能有所帮助!

相关问题