AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[google-cloud-sql](dba)

Martin Hope
TohaSt
Asked: 2022-10-01 08:54:35 +0800 CST

Postgres 允许 UPDATE 但只授予 SELECT

  • 1

表的所​​有者x是 user dave。

只有SELECT被授予cloudsqlsuperuser,但用户anton能够更新表中的数据x。怎么可能?

=> \du
                                                         List of roles
         Role name         |                         Attributes                         |               Member of               
---------------------------+------------------------------------------------------------+---------------------------------------
 anton                     | Create role, Create DB                                     | {cloudsqlsuperuser}
 cloudsqladmin             | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 cloudsqlagent             | Create role, Create DB                                     | {cloudsqlsuperuser}
 cloudsqliamserviceaccount | Cannot login                                               | {}
 cloudsqliamuser           | Cannot login                                               | {}
 cloudsqlimportexport      | Create role, Create DB                                     | {cloudsqlsuperuser}
 cloudsqlreplica           | Replication                                                | {pg_monitor}
 cloudsqlsuperuser         | Create role, Create DB                                     | {pg_monitor,pg_signal_backend}
 dave                      | Create role, Create DB                                     | {cloudsqlsuperuser,postgres}

=> \dt
                   List of relations
 Schema |           Name           | Type  |   Owner   
--------+--------------------------+-------+-----------
 public | x                        | table | dave
=> \z x
                                      Access privileges
 Schema |     Name     | Type  |       Access privileges       | Column privileges | Policies 
--------+--------------+-------+-------------------------------+-------------------+----------
 public | x            | table | dave=arwdDxt/dave            +|                   | 
        |              |       | =arwdDxt/dave                +|                   | 
        |              |       | cloudsqlsuperuser=r/dave     +|                   | 
(1 row)

我能够以anton用户身份进行更新。不应该禁止吗?

=> update x set ...
UPDATE 1
postgresql google-cloud-sql
  • 1 个回答
  • 36 Views
Martin Hope
PeV
Asked: 2022-09-14 06:50:28 +0800 CST

强制执行表所有权

  • 0

这是交易:我有 postgresql 数据库(GCP Cloud SQL 部署,我不关心版本)并且我想强制执行表的所有权。

具体来说,应用程序mydb通过 GCP IAM 帐户登录数据库,该帐户已分配role_admin. 应用程序需要创建一个mytable由role_mydb_admin. 所以它需要先调用SET ROLE role_mydb_admin;然后继续创建表。以下是所有权的样子:

Role                  | Member of
----------------------+-----------------
user@gcpprojectid.iam | role_admin
role_admin            | role_mydb_admin
Name    | Owner
--------+-----------------
mytable | role_mydb_admin

如果由于某种原因,用户没有将角色设置为role_mydb_admin,则将在role_admin. 这是我需要避免的问题。

解决此问题的一种方法是创建一个函数,该函数将通过事件触发器拦截 CREATE TABLE 并重新分配错误创建的表。这可行但不是一个足够好的解决方案,因为一些应用程序正在执行大量 DDL 操作作为其工作的一部分,并且它调用会过度触发此功能。其次,我不喜欢。

我想要的是某种策略,它可以确保只能使用role_mydb_admin用户创建表。这样的事情可能吗?类似的东西deny create table if owner not equal to role_mydb_admin。

或者,如果我可以拥有一个role_admin根本没有 CREATE 和 ALTER 权限,但具有 SET ROLE 权限role_mydb_admin(具有这些权限)的权限。

postgresql google-cloud-sql
  • 1 个回答
  • 24 Views
Martin Hope
user1028270
Asked: 2021-05-06 10:24:24 +0800 CST

如何查看角色的 postgres 权限来自何处?

  • 0

我使用谷歌 cloudsql 但这是一个更通用的 postgres 问题。

我有一个名为 cloudsqliamserviceaccount 的角色(已由 cloudsql 创建和管理)。

cloudsqliamserviceaccount 角色不是任何其他角色的成员。

每当我创建一个新的 postgres 用户(通过 GCP 控制台或 gcloud)时,他们都会被添加到这个角色中。我无法将它们从角色中删除,因为它会破坏 cloudsql IAM 集成。

cloudsqliamserviceaccount 角色具有非常全面的权限。它可以连接到所有数据库并在所有数据库上执行 CRUD。但我不确定如何查看其完整的权限列表。

总之我有这个角色“cloudsqliamserviceaccount”。我如何查看它可以访问的内容?我为我创建的每个新数据库自动获取 CRUD,但它不是任何其他角色的成员。这个权限来自哪里,我怎么看?

postgresql google-cloud-sql
  • 1 个回答
  • 344 Views
Martin Hope
WillyC
Asked: 2021-03-30 11:23:44 +0800 CST

IMPORT FOREIGN SCHEMA 因 127.0.0.1 的密码错误而失败,但对于远程 IP(同一服务器的)却没有

  • 3

我在 Google SQL Cloud 中有一个带有多个数据库的 Postgres 服务器。我想在它们之间创建一个 FOREIGN DATA WRAPPER。如果我使用服务器的远程 IP 它可以工作:

CREATE SERVER "some_db_fdw" FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '34.94.1.23', dbname 'some_db');
CREATE USER MAPPING FOR some_user SERVER "some_db_fdw" OPTIONS (user 'some_user', password 'some_password');
IMPORT FOREIGN SCHEMA public LIMIT TO (my_table) FROM SERVER "some_db_fdw" INTO public;

...但如果我使用本地 IP(127.0.0.1)代替 34.94.1.23(仅限示例 IP),则会出现错误:

ERROR: password is required
DETAIL: Non-superuser cannot connect if the server does not request a password.
HINT: Target server’s authentication method must be changed.

为什么?我在用户映射中提供密码。实际上,如果我在此处省略密码,则错误将更改为:

ERROR:  password is required
DETAIL:  Non-superusers must provide a password in the user mapping.

所以它似乎知道它应该从用户映射中获取密码。

我不能只使用远程 IP 的原因是我们需要证书,所以如果我使用远程 IP 启用“仅允许 SSL 连接”失败,因为我在 psql 中没有证书(我在我连接的机器上有它们或者我根本无法连接,但由于此服务器位于 SQL Cloud 中,我没有任何文件系统访问权限,也无法为数据库本身提供连接到另一个数据库的证书 - 因此我尝试使用 127.0.0.1 来避免这个问题)。

postgresql google-cloud-sql
  • 2 个回答
  • 739 Views
Martin Hope
Juan Wilde
Asked: 2021-03-08 01:11:13 +0800 CST

谷歌云数据库的不断写操作

  • 1

我有一个 MySQL 8.0 集群数据库,到目前为止我用它来测试一些东西,所以我只是不时写。问题是我意识到一直都有写操作。即使我的应用程序没有写入它。

这是仪表板的屏幕截图。

顺便提一下,我在 Digital Ocean 中有另一个集群,这个问题并没有发生。

任何帮助将不胜感激 写操作示例

更新(2021-03-09)按照 Vérace 的建议执行查询: 询问

如我所见,这time_zone_transition是增长最快的

google-cloud-sql
  • 1 个回答
  • 40 Views
Martin Hope
Brian Brownton
Asked: 2019-04-19 11:05:49 +0800 CST

GCP MySQL 查询日志记录

  • 2

我在 GCP 上有一个托管的 MySQL 实例。我在哪里可以找到查询日志?这是我需要先在某处启用的东西吗?我已经阅读了他们的文档(https://cloud.google.com/sql/docs/mysql/how-to),并没有发现它对这个主题有帮助。

mysql google-cloud-sql
  • 1 个回答
  • 3764 Views
Martin Hope
atxdba
Asked: 2019-02-24 20:12:18 +0800 CST

提高 GCP SQL 故障转移的速度

  • 1

我一直在尝试 GCP 的 SQL 高可用性选项。有没有办法提高故障转移速度?

在 mysql 完全不可用的情况下,通过 UI 尝试手动故障转移实际上需要 5 分钟多的时间。

我正在使用目前可能没有流量的最小的第二代 5.7 实例。

看起来它实际上是在停止和启动实例。我无法理解这是“HA”的一个选项,意味着停机时间最短。

mysql google-cloud-sql
  • 2 个回答
  • 65 Views
Martin Hope
kamituel
Asked: 2018-08-24 06:12:30 +0800 CST

将列设置为从另一个表中随机选择的值

  • 2

考虑一下:

UPDATE dest
SET dest_col = (SELECT s.src_col FROM source s
                WHERE s.name = 'abc'
                ORDER BY random() LIMIT 1 OFFSET 0);

我的目标:在每一行中设置dest.dest_col一个从子查询匹配的所有值中随机选择的值。

为此,我添加了ORDER BY random() LIMIT 1. 但这通过选择一次随机值,然后将其设置到dest.dest_col.

我尝试添加OFFSET 0(建议在其他答案中作为防止 Postgres 优化子查询的一种方式),但这似乎没有任何效果。

另请注意,我需要它才能在 GCP 上运行的 PostgreSQL 上工作。

postgresql google-cloud-sql
  • 1 个回答
  • 4073 Views
Martin Hope
Jacob
Asked: 2018-08-14 08:55:49 +0800 CST

如何通过sql配置PG文本搜索字典

  • 0

我想在不访问文件系统共享/tsearch_data(特别是谷歌云 SQL)的情况下向文本搜索字典添加术语。

是否有通过 SQL 执行此操作的语法?

我只找到了“ALTER TEXT SEARCH DICTIONARY..”,它可以配置字典的工作方式,但不能用于添加或删除字典 .rules/.syn/.dict 文件中的行。

postgresql google-cloud-sql
  • 1 个回答
  • 193 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve