迁移 Oracle 到 PostgreSQL: 数据库用户

七月 21, 2023

数据库用户帐户用于对连接会话进行身份验证,并授权单个用户访问特定数据库对象。数据库管理员向用户帐户授予权限,应用程序使用用户帐户访问数据库对象。

Oracle 用法

对应用程序提供数据库访问的步骤

  1. 在数据库中创建用户帐户。用户帐户通常使用密码进行身份验证。还存在对用户进行身份验证的其他方法。
  2. 将权限分配给数据库用户帐户,以便访问某些数据库对象和系统权限。
  3. 连接应用程序使用数据库用户名和密码进行身份验证。

Oracle 数据库用户通用属性

  • 向数据库用户授予特权或角色(特权集合)。
  • 为用户定义缺省数据库表空间。
  • 为用户分配表空间配额。
  • 配置密码策略、密码复杂性、锁定或解锁帐户。

身份验证机制

  • 用户名和密码 — 默认使用。
  • 外部 — 使用操作系统或第三方软件(如 Kerberos)。
  • 全局 — 企业目录服务(如 Active Directory 或 Oracle Internet Directory)。

与用户相比的 Oracle 模式

在 Oracle 数据库中,用户等于一个模式。这种关系很特殊,因为用户和模式本质上是一回事。将 Oracle 数据库用户视为用于连接到数据库的帐户,而数据库模式是属于该帐户的对象(表、视图等)集。

  • 不能单独创建模式和用户。创建数据库用户时,还会创建具有相同名称的数据库模式。
  • 在 Oracle 中运行CREATE USER命令时,将创建一个用于登录的用户和一个用于存储数据库对象的模式。
  • 新创建的模式为空,但可以在其中创建表等对象。

Oracle 12c 中的数据库用户

Oracle 12c 数据库中存在两种类型的用户:

  • 普通用户 — 在所有数据库容器、根数据库和可插拔数据库 (PDB) 中创建。普通用户必须在用户名中包含 C## 前缀。
  • 本地用户 — 仅在特定 PDB 中创建。可以在多个 PDB 中创建具有相同用户名的不同数据库用户。

例子

以下示例演示了以下操作:

  • 使用默认表空间创建公共数据库用户。
  • 向用户授予权限和角色。
  • 将配置文件分配给用户,解锁帐户,并强制用户更改密码(PASSWORD EXPIRE)。
  • 在可插拔数据库my_pdb1中创建本地数据库用户。
CREATE USER c##test_user IDENTIFIED BY password DEFAULT TABLESPACE USERS;
GRANT CREATE SESSION TO c##test_user;
GRANT RESOURCE TO c##test_user;
ALTER USER c##test_user ACCOUNT UNLOCK;
ALTER USER c##test_user PASSWORD EXPIRE;
ALTER USER c##test_user PROFILE ORA_STIG_PROFILE;
ALTER SESSION SET CONTAINER = my_pdb1;
CREATE USER app_user1 IDENTIFIED BY password DEFAULT TABLESPACE USERS;

有关详细信息,请参阅 Oracle 文档中的管理 Oracle 数据库用户的安全性

PostgreSQL 用法

在PostgreSQL中没有用户,只有角色,具有连接权限的角色可以被视为用户。

有关更多信息,请参阅 PostgreSQL 角色