PostgreSQL 创建用户、删除用户、用户授权

1. PostgreSQL 创建用户语法

PostgreSQL 完整的创建用户语法如下:

CREATE USER name [ [ WITH ] option [ ... ] ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

2. PostgreSQL 创建用户示例

(1)创建用户

create user user1;

(2)创建用户并设置密码

create user user2 with password '123456';

(3)创建超级管理员用户

create user user3 with superuser password '123456';

3. PostgreSQL 用户授权

创建的用户需要授权才能访问数据库,权限分为很多种类,常见的授权是将一个数据库的所有权限授予某个用户,当然也可以授予指定权限,比如某个用户只能查询某个数据库中的表,而不能修改表数据。

(1)权限授予到数据库级别,主要包含连接,创建等权限。

grant all on database postgres to user1;

(2)权限授予到 schema 级别,主要包含 select,insert,update,delete,truncate等权限。

grant all on all tables in schema public to user2;

(3)权限授予到表级别,主要包含 select,insert,update,delete,truncate等权限。

grant all on table t1 to user3;

(4)授权只读权限

grant select on all tables in schema public to user4;

(5)权限类型

  • all,所有权限
  • select,查询表数据权限
  • insert,插入表数据权限
  • update,更新表数据权限
  • delete,删除表数据权限
  • truncate,清空表数据权限
  • trigger,触发器权限
  • references,引用约束权限
  • usage,使用权限
  • create,创建权限,创建表或者其他对象
  • connect,数据库连接权限
  • temp/temporary,临时表权限
  • execute,执行权限,执行函数,存储过程等

4. PostgreSQL 解除用户授权

使用 revoke 命令解除用户的权限,如下:

revoke all on database postgres from user1;

revoke select on all tables in schema public from user2;

5. PostgreSQL 删除用户

删除用户使用 drop user 语法,如果有其他对象依赖该用户,则需要先删除依赖该用户的对象之后才能删除该用户。

drop user user1;
或者
drop user if exists user1;

文章评论

0条评论