如何将数据库的某些权限授予用户?
How do I grant certain privileges on a database to a user?
我有一个没有表的 Postgres 数据库。数据库归用户所有。
当我在命令行中输入 psql
然后 \dt
时,我得到的是:
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------------+----------+-------------+-------------+-----------------------
somedb | someuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
我想授予 someuser
select 的权力,在 somedb
上插入、更新、删除、t运行 分类和创建表。当我在命令行中 运行 GRANT CREATE SELECT INSERT UPDATE DELETE TRUNCATE PRIVILEGES ON DATABASE somedb TO someuser;
时,出现此错误:
LINE 1: GRANT CREATE SELECT INSERT UPDATE DELETE TRUNCATE PRIVILEGES...
我必须更改什么才能将这些权限授予 someuser
?
您需要在每个权限之间添加逗号:
GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
ON DATABASE nombase [, ...]
TO { nomutilisateur | GROUP nomgroupe | PUBLIC } [, ...] [ WITH
GRANT OPTION ]
但是正如所说,这些权限不能在数据库级别设置。
表未在 "a database" 中创建 - 仅在模式中创建。
如果您希望该用户仅在特定架构中创建 table,则您需要授予对该架构的使用权:
grant usage, create on schema public to someuser;
您不需要为该用户尚未创建的 table 授予权限。创建 table 的用户是该 table 的所有者。 table 的所有者可以用它做任何事情。无需授予所有者额外的权限。
如果要允许用户创建新模式,您需要授予对数据库的 create
权限:
grant create on database somedb to someuser;
如果你想允许用户select任何现有的table,你需要明确授权:
grant select,insert,update,delete on all tables in schema public to someuser;
如果您希望该用户也能够为不是由 那个 用户创建的新 table 执行此操作,您需要更改默认权限:
alter default privileges
in schema public
grant select,insert,update,delete on tables
to someuser;
我有一个没有表的 Postgres 数据库。数据库归用户所有。
当我在命令行中输入 psql
然后 \dt
时,我得到的是:
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------------+----------+-------------+-------------+-----------------------
somedb | someuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
我想授予 someuser
select 的权力,在 somedb
上插入、更新、删除、t运行 分类和创建表。当我在命令行中 运行 GRANT CREATE SELECT INSERT UPDATE DELETE TRUNCATE PRIVILEGES ON DATABASE somedb TO someuser;
时,出现此错误:
LINE 1: GRANT CREATE SELECT INSERT UPDATE DELETE TRUNCATE PRIVILEGES...
我必须更改什么才能将这些权限授予 someuser
?
您需要在每个权限之间添加逗号:
GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
ON DATABASE nombase [, ...]
TO { nomutilisateur | GROUP nomgroupe | PUBLIC } [, ...] [ WITH
GRANT OPTION ]
但是正如
表未在 "a database" 中创建 - 仅在模式中创建。
如果您希望该用户仅在特定架构中创建 table,则您需要授予对该架构的使用权:
grant usage, create on schema public to someuser;
您不需要为该用户尚未创建的 table 授予权限。创建 table 的用户是该 table 的所有者。 table 的所有者可以用它做任何事情。无需授予所有者额外的权限。
如果要允许用户创建新模式,您需要授予对数据库的 create
权限:
grant create on database somedb to someuser;
如果你想允许用户select任何现有的table,你需要明确授权:
grant select,insert,update,delete on all tables in schema public to someuser;
如果您希望该用户也能够为不是由 那个 用户创建的新 table 执行此操作,您需要更改默认权限:
alter default privileges
in schema public
grant select,insert,update,delete on tables
to someuser;