PostgreSQL 的用户管理操作

本文详细介绍了如何在PostgreSQL中通过SQL命令和psql工具进行用户管理,包括查询用户、创建用户、修改密码、删除用户、授权与撤销权限,以及角色的属性设置和CREATEUSER与CREATEROLE的区别。
摘要由CSDN通过智能技术生成

在 PostgreSQL 中,可以通过 SQL 命令和 psql 命令行工具进行用户管理操作。以下是一些常见的 PostgreSQL 用户管理操作:

1. 查询用户:

\du

2. 创建用户:

可以使用 CREATE ROLE 命令创建新用户,语法如下:

CREATE ROLE username WITH LOGIN PASSWORD 'password';
如:
CREATE ROLE jinjin WITH LOGIN PASSWORD 'jinjin';
或:注意使用role,默认是不带登录的权限的
CREATE user jinjin WITH LOGIN PASSWORD 'jinjin';

其中,username 是要创建的用户名,password 是用户的登录密码。如果要创建的用户只需要登录而不需要创建对象或执行其他管理操作,则可以省略 WITH LOGIN 部分。

3. 修改用户密码:

可以使用 ALTER ROLE 命令修改用户密码,语法如下:

ALTER ROLE username WITH PASSWORD 'new_password';

其中,username 是要修改密码的用户名,new_password 是新密码。

4. 删除用户:

可以使用 DROP ROLE 命令删除用户,语法如下:

DROP ROLE username;

其中,username 是要删除的用户名。

注:如果无法删除,需要先撤销用户的所有权限才能进行删除;

5. 授权用户:

可以使用 GRANT 命令为用户授权,语法如下:

GRANT privilege_name ON object_name TO username;
如:
# 授权数据库
grant all privileges on database mydata to jinjin;
# 授权表权限(需要管理员进入数据库进行授权)
grant all privileges on all tables in schema public to jinjin;

其中,privilege_name 是要授予的权限名称(如 SELECT、INSERT、UPDATE 等),object_name 是要授予权限的对象名称(如表、视图等),username 是被授权的用户名。

6. 撤销用户权限:

可以使用 REVOKE 命令撤销用户的权限,语法如下:

REVOKE privilege_name ON object_name FROM username;
如:
# 撤销数据库权限
revoke all privileges on database mydata from jinjin;
# 撤销表权限
revoke all privileges on all tables in schema public from jinjin;

其中,privilege_nameobject_nameusername 的含义与 GRANT 命令相同。

7. 角色属性

在 PostgreSQL 中,角色(role)可以具有各种属性,这些属性定义了角色的特征和行为。以下是一些常见的角色属性:

  1. 登录权限(LOGIN):允许角色登录到数据库。
  2. 超级用户权限(SUPERUSER):赋予角色超级用户权限,使其可以执行任何操作,包括修改系统表。
  3. 创建数据库权限(CREATEDB):允许角色创建新的数据库。
  4. 创建角色权限(CREATEROLE):允许角色创建新的数据库角色。
  5. 创建临时表权限(TEMPORARY):允许角色创建临时表。
  6. 连接限制(CONNECTION LIMIT):限制角色同时连接到数据库的最大数量。
  7. 继承权限(INHERIT):允许角色继承其他角色的权限。
  8. 授权权限(GRANT):允许角色授权给其他角色权限。
  9. 修改其他角色权限(ALTER ANY ROLE):允许角色修改其他角色的属性。
  10. 删除其他角色权限(DROP ANY ROLE):允许角色删除其他角色。
  11. 超时限制(PASSWORD EXPIRY):设置角色密码的过期时间。
  12. 加密方式(ENCRYPTED):指定角色密码是否加密存储。

这些属性可以单独设置或组合使用,以满足不同的安全需求和角色权限管理。通过适当配置角色属性,可以确保数据库的安全性和权限控制。

8. Role和user解析

以创建角色为例:

在 PostgreSQL 中,CREATE ROLECREATE USER 实际上是同义的,都用于创建数据库角色(用户)。它们的区别在于语法的不同以及默认的行为。

  1. 使用 CREATE ROLE 创建角色:
CREATE ROLE jinjin WITH LOGIN PASSWORD 'jinjin';
  1. 使用 CREATE USER 创建用户:
CREATE USER jinjin WITH LOGIN PASSWORD 'jinjin';

这两个命令在功能上是等效的,都用于创建一个名为 “jinjin” 的登录用户,并为该用户设置密码为 “jinjin”。

然而,值得注意的是,在 PostgreSQL 中,CREATE ROLE 更为通用,它既可以创建普通用户角色,也可以创建其他类型的角色,如超级用户、数据库用户、组等。而 CREATE USER 在语法上更加简洁,它默认创建一个具有登录权限的普通用户角色。

因此,如果你只是想创建一个具有登录权限的普通用户,可以使用 CREATE USER 命令,它更为直观和简洁。而如果你需要创建其他类型的角色,或者想要明确指定角色的属性,那么可以使用 CREATE ROLE 命令。

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值