本文介绍如何为RDS PostgreSQL实例创建账号。
账号类型
RDS PostgreSQL实例支持两种数据库账号:高权限账号和普通账号。详细说明如下。
账号类型 | 说明 |
高权限账号 |
说明
|
普通账号 |
|
注意事项
支持在控制台创建多个高权限账号和普通账号,也可以通过SQL命令创建、管理普通账号。
如果您要迁移本地数据库到RDS,请在RDS实例中创建与本地数据库一致的迁移账号和数据库。
分配数据库账号权限时,请按最小权限原则和业务角色创建账号,并合理分配只读和读写权限。必要时可以把数据库账号和数据库拆分成更小粒度,使每个数据库账号只能访问其业务范围内的数据。如果不需要数据库写入操作,请分配只读权限。
为保障数据库的安全,请将数据库账号的密码设置为强密码,并定期更换。
创建账号
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中选择账号管理。
单击创建账号。
设置如下参数。
参数
说明
数据库账号
长度为2~63个字符。
由小写字母、数字或下划线组成。
以字母开头,以字母或数字结尾。
不能和已有的账号名重复。
不能以pg开头。
不能使用SQL关键字。具体请参见SQL关键字。
账号类型
RDS PostgreSQL实例支持两种数据库账号:高权限账号和普通账号。
高权限账号拥有所有数据库的所有操作权限。
普通账号拥有已授权数据库(owner)的所有操作权限。
说明操作权限包括SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER。
如需对账号权限进行精细化管理,例如创建只读账号,请参见RDS PostgreSQL权限管理最佳实践。
新密码
长度为8~32个字符。
由大写字母、小写字母、数字、特殊字符中的任意三种组成。
特殊字符为!@#$%^&*()_+-=
确认密码
再次输入相同的密码。
备注
填写备注信息。
单击确定。
常见问题
Q:如何使用普通账号管理多个数据库?
A:普通账号可以通过GRANT授权来管理多个数据库。例如,执行GRANT CONNECT, TEMPORARY, CREATE ON DATABASE database_name TO user_name; 命令,可以赋予user_name用户连接到目标数据库、在目标数据库中创建临时表以及在目标数据库中创建对象等权限。
Q:如何为同一个数据库创建多个普通账号并分别授权?
A:RDS PostgreSQL 支持为同一个数据库创建多个普通账号并分别授权,各账号的权限相互独立,互不影响。可以通过以下两种方式授权:
控制台授权:创建多个普通账号后,在数据库管理页面为每个账号分别授予目标数据库的 DBOwner 权限。
SQL 授权:通过
GRANT命令对账号精细化授权。例如,执行以下命令,赋予指定账号连接数据库、创建临时表以及在数据库中创建对象的权限:GRANT CONNECT, TEMPORARY, CREATE ON DATABASE database_name TO user_name;如需一次性授予数据库的完整权限(等同于 DBOwner),可执行以下命令:
GRANT ALL PRIVILEGES ON DATABASE database_name TO user_name;
Q:创建只读账号是否会影响线上实例?
A:创建只读账号不会影响线上实例。该操作仅涉及 GRANT 权限变更,权限立即生效,无需重启实例,也不会导致服务中断。使用高权限账号执行以下命令,即可为目标账号授予只读权限:
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <账号名>;
GRANT USAGE ON SCHEMA public TO <账号名>;授权后,该账号可执行 SELECT 查询,无法执行 INSERT、UPDATE、DELETE 操作。
Q:为什么普通账号可以连接其他数据库并查看表名?
A:PostgreSQL默认向PUBLIC(所有角色)授予数据库的CONNECT权限。在保留默认权限且满足连接条件时,普通账号通常可以连接实例中的其他用户数据库。
连接后,即使没有业务表的数据访问权限,也可能通过系统目录查看表名等部分元数据。这属于PostgreSQL默认权限机制,不代表账号具有这些表的数据读写权限。
相关API
通过CreateAccount创建数据库账号。