Lazy loaded image
05_数据库用户
Words 3758Read Time 10 min
2025-12-11

数据库用户

1. 数据库用户的基本概念

1.1 什么是数据库用户

数据库用户是指有权限访问数据库系统的用户账户。数据库用户可以是个人、应用程序或服务,用于验证用户身份并控制其对数据库资源的访问权限。

1.2 数据库用户的作用

数据库用户的主要作用包括: - 身份验证:验证用户身份,确保只有授权用户才能访问数据库 - 权限控制:控制用户对数据库对象(如表、视图、函数等)的访问权限 - 审计追踪:记录用户的数据库操作,便于审计和追踪 - 资源管理:限制用户使用的数据库资源,如连接数、内存使用等

1.3 数据库用户与操作系统用户的区别

  • 数据库用户:存在于数据库系统内部,用于访问和管理数据库资源
  • 操作系统用户:存在于操作系统中,用于登录和管理操作系统
在某些数据库系统中,数据库用户可以与操作系统用户关联,实现单一登录(SSO)功能。

2. openGauss数据库的用户类型

openGauss数据库支持以下几种用户类型:

2.1 系统管理员用户

系统管理员用户是openGauss数据库中具有最高权限的用户,负责数据库的安装、配置、管理和维护。openGauss默认的系统管理员用户是omm

2.2 数据库管理员用户

数据库管理员用户是负责管理特定数据库的用户,具有该数据库的所有权限。

2.3 普通用户

普通用户是数据库的一般使用者,只具有被授予的特定权限。

2.4 监控用户

监控用户是用于监控数据库运行状态的用户,具有查看数据库监控信息的权限。

3. 用户管理

3.1 创建用户

使用CREATE USERCREATE ROLE命令创建数据库用户。在openGauss中,CREATE USERCREATE ROLE的区别在于CREATE USER创建的用户默认具有登录权限,而CREATE ROLE创建的用户默认没有登录权限。

3.1.1 基本语法

常用选项: - LOGIN/NOLOGIN:是否允许用户登录 - SUPERUSER/NOSUPERUSER:是否为超级用户 - CREATEDB/NOCREATEDB:是否允许创建数据库 - CREATEROLE/NOCREATEROLE:是否允许创建角色 - INHERIT/NOINHERIT:是否继承角色权限 - PASSWORD 'password':设置用户密码 - VALID UNTIL 'timestamp':设置密码有效期 - CONNECTION LIMIT connlimit:设置最大连接数

3.1.2 示例

3.2 修改用户

使用ALTER USERALTER ROLE命令修改数据库用户的属性。

3.2.1 基本语法

3.2.2 示例

3.3 删除用户

使用DROP USERDROP ROLE命令删除数据库用户。

3.3.1 基本语法

3.3.2 示例

3.4 查看用户

使用\du\du+命令查看数据库用户列表和详细信息。
或使用SQL查询系统视图:

4. 权限管理

4.1 权限的类型

openGauss数据库支持以下几类权限:

4.1.1 对象权限

对象权限是指用户对数据库对象(如表、视图、函数等)的操作权限,包括: - SELECT:查询表或视图的权限 - INSERT:向表或视图插入数据的权限 - UPDATE:修改表或视图数据的权限 - DELETE:删除表或视图数据的权限 - TRUNCATE:清空表数据的权限 - REFERENCES:创建外键引用的权限 - TRIGGER:创建触发器的权限 - EXECUTE:执行函数或存储过程的权限

4.1.2 语句权限

语句权限是指用户可以执行的SQL语句权限,包括: - CREATE:创建数据库对象的权限 - ALTER:修改数据库对象的权限 - DROP:删除数据库对象的权限 - CREATE DATABASE:创建数据库的权限 - CREATE ROLE:创建角色的权限

4.1.3 角色权限

角色权限是指用户可以拥有的特殊角色权限,包括: - SUPERUSER:超级用户权限 - INHERIT:继承角色权限 - CREATEROLE:创建角色的权限 - CREATEDB:创建数据库的权限 - LOGIN:登录数据库的权限

4.2 授予权限

使用GRANT命令授予用户权限。

4.2.1 授予对象权限

示例:

4.2.2 授予语句权限

示例:

4.3 收回权限

使用REVOKE命令收回用户权限。

4.3.1 收回对象权限

示例:

4.3.2 收回语句权限

示例:

4.4 查看权限

使用\dp\dp+命令查看表的权限信息:
或使用SQL查询系统视图:

5. 角色管理

5.1 角色的概念

角色是一组权限的集合,可以将角色授予用户或其他角色,实现权限的批量管理。

5.2 创建角色

使用CREATE ROLE命令创建角色:
示例:

5.3 授予角色权限

使用GRANT命令将权限授予角色:

5.4 将角色授予用户

使用GRANT命令将角色授予用户:
示例:

5.5 查看角色成员

使用\du命令查看角色成员:
或使用SQL查询:

5.6 收回角色

使用REVOKE命令收回用户的角色:
示例:

5.7 删除角色

使用DROP ROLE命令删除角色:
示例:

6. 角色继承

6.1 角色继承的概念

角色继承是指用户可以继承其所属角色的权限。当用户执行某个操作时,数据库系统会检查用户本身的权限以及其所属角色的权限。

6.2 开启和关闭角色继承

使用ALTER USERALTER ROLE命令修改用户或角色的继承属性:

6.3 使用SET ROLE命令切换角色

当用户关闭了角色继承时,可以使用SET ROLE命令临时切换到某个角色,使用该角色的权限:

7. 认证方式

openGauss数据库支持多种认证方式,用于验证用户身份:

7.1 密码认证

密码认证是最常用的认证方式,用户通过输入用户名和密码进行身份验证。

7.2 信任认证

信任认证是指数据库系统信任来自特定主机的连接,不需要密码验证。

7.3 LDAP认证

LDAP认证是指使用LDAP(Lightweight Directory Access Protocol)服务器进行身份验证。

7.4 Kerberos认证

Kerberos认证是一种网络认证协议,用于在不安全的网络环境中进行安全的身份验证。

7.5 SSL认证

SSL认证是指使用SSL(Secure Sockets Layer)证书进行身份验证,确保数据传输的安全性。

8. 用户资源限制

openGauss数据库可以限制用户使用的数据库资源,包括:

8.1 连接数限制

限制用户同时连接到数据库的数量:

8.2 资源池限制

openGauss数据库使用资源池来管理用户的资源使用,可以为不同的用户或角色分配不同的资源池。

9. 安全最佳实践

9.1 最小权限原则

遵循最小权限原则,只授予用户完成其工作所需的最小权限,避免授予过多权限。

9.2 定期修改密码

定期修改用户密码,特别是系统管理员和数据库管理员用户的密码。

9.3 使用强密码

使用强密码,包括大小写字母、数字和特殊字符,避免使用简单密码。

9.4 禁用默认用户

禁用或删除不必要的默认用户,特别是那些具有高权限的默认用户。

9.5 定期审计用户权限

定期审计用户的权限,确保用户只具有必要的权限,及时收回不必要的权限。

9.6 使用角色管理权限

使用角色管理权限,将相同权限的用户分配到同一个角色,便于权限的批量管理和维护。

9.7 限制远程访问

限制数据库的远程访问,只允许来自特定IP地址或网络的连接。

9.8 启用审计日志

启用审计日志,记录用户的数据库操作,便于审计和追踪。

10. 示例:用户管理流程

10.1 创建角色和用户

10.2 测试用户权限

10.3 修改用户权限

11. 小结

本章节介绍了openGauss数据库的用户管理和权限管理,包括用户类型、用户创建、修改和删除、权限授予和收回、角色管理、认证方式、资源限制和安全最佳实践。通过本章节的学习,读者可以掌握openGauss数据库的用户管理和权限管理方法,能够创建和管理数据库用户,控制用户对数据库资源的访问权限,确保数据库的安全性和完整性。
用户管理和权限管理是数据库管理的重要组成部分,数据库管理员需要熟练掌握这些技能,以确保数据库的安全和正常运行。在实际工作中,应遵循最小权限原则,定期审计用户权限,使用强密码,限制远程访问等安全最佳实践,保护数据库的安全。
上一篇
openGauss数据库
下一篇
openGauss数据库