add*_*ted 4 postgresql permissions
在 PostgreSQL 中,当我在另一个数据库中时,如何才能GRANT USAGE在某个数据库中为某个用户提供某个模式?
first我以具有特权的用户身份连接到数据库(假设是数据库) CREATEDB。我想second为用户创建另一个数据库normal_user,并授予该用户公共模式的使用权。我可以CREATE DATABASE second;从当前连接的数据库执行此操作,但据我所知我不能执行此操作GRANT USAGE ON SCHEMA public TO normal_user;,因为这只会授予对public当前连接数据库中的架构的使用权限。
我想在单个 SQL 脚本中自动执行数据库创建、用户创建和权限授予。
我希望有一种巧妙的方法来做到这一点。我想这样做是为了自动化数据库和用户创建以及权限授予。我知道一些工具 Lime Ansible 或 Terraform可能有助于实现自动化。但我希望我们能够仅通过 Postgres 脚本来做到这一点。
我使用 AWS RDS 作为我的 Postgres,但我认为我没有办法通过 ssh 来从 cmd 行运行 Postgres 命令。我正在尝试从 dbeaver 脚本页面执行此操作。所以我认为 SQL 就是我要做这件事的全部。如果我可以使用 SQL 轻松切换用户或切换数据库,那就很有帮助。
经过思考,我认为使用psql -u user -p -h hostname我也许能够连接到实例并在 shell 中切换数据库。但如果我弄错了,请告诉我。
当您连接到另一个数据库时,无法更改一个数据库中的对象。您必须连接到要授予权限的数据库。
如果您使用 ,您仍然可以在单个脚本中执行此操作psql,因为它具有\c连接到不同数据库的命令。所以你的脚本可能看起来像这样:
CREATE DATABASE second;
\c second
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
CREATE SCHEMA newschema;
GRANT USAGE ON SCHEMA newschema TO normal_user;
Run Code Online (Sandbox Code Playgroud)
出于安全原因,您应该始终撤销CREATE对架构的权限,并且您不需要授予该架构的权限,因为该权限已经授予.publicPUBLICUSAGEPUBLIC
| 归档时间: |
|
| 查看次数: |
3711 次 |
| 最近记录: |