【发布时间】:2019-02-14 01:17:13
【问题描述】:
我正在努力使用 Google Cloud Platform 的 Cloud SQL 组件解决这个问题。我的技术堆栈包括在 Google Kubernetes Engine (GKE) 部署中托管我的应用程序,使用 Cloud SQL 代理 sidecar 连接到 pod 内的数据库。后端是一个 Symfony 项目。
我按照以下步骤创建和填充数据库(没有成功):
- 创建 Cloud SQL Postgres 实例
- 向 k8s 容器添加代理以使用所有凭据连接到 Cloud SQL 实例,如GCP documentation 中所述
- 进入我的 Symfony (
phpfpm) pod 并运行命令php bin/console doctrine:schema:update --force以更新架构。查询在数据库中执行,因此创建了架构等等。 - 我尝试使用
postgres用户从GCP 内的SQL 控制台连接打开数据库,并尝试执行一个简单的select * from foo;查询。回复是Insufficient privilege: 7 ERROR: permission denied for relation
如何使用postgres用户查询数据库中的数据?
编辑:
我有这种关于用户的情况:
Role name | Attributes | Member of
-------------------+------------------------------------------------------------+-------------------------------
acando14 | Create role, Create DB | {cloudsqlsuperuser,proxyuser}
cloudsqladmin | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
cloudsqlagent | Create role, Create DB | {cloudsqlsuperuser}
cloudsqlreplica | Replication | {}
cloudsqlsuperuser | Create role, Create DB | {}
postgres | Create role, Create DB | {cloudsqlsuperuser,acando14}
proxyuser | Create role, Create DB | {cloudsqlsuperuser}
我在表格中有这种情况:
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | article | table | acando14
如果我使用 postgres 用户登录我的数据库 symfony 工作:
symfony => select * from article;
id | model_id | code | size
----+----------+------+------
(0 rows)
但如果我使用服务器执行代码,则响应是:
SQLSTATE[42501]:权限不足:7 错误:权限被拒绝 对于 PDOException 的关系员工(代码:42501):SQLSTATE [42501]: 权限不足:7 错误:关系的权限被拒绝..在
还有一个问题是我没有用命令生成所有的表,但是我必须在执行所有查询时生成它,太奇怪了……
谢谢你,问候
【问题讨论】:
-
k8s托管的服务以什么用户身份连接数据库?
-
使用代理用户...
标签: php postgresql symfony google-cloud-platform google-cloud-sql