若要使用云数据库RDS,您需要在实例中创建数据库和账号。本文介绍如何为RDS PostgreSQL实例创建数据库和账号。
账号类型
RDS PostgreSQL实例支持两种数据库账号:高权限账号和普通账号。详细说明如下。
账号类型 |
说明 |
高权限账号 |
- 只能通过控制台或API创建和管理。
- 本地盘实例只能创建一个高权限账号,云盘实例可以创建多个高权限账号,管理所有普通账号和数据库。
- 开放了更多权限,可满足个性化和精细化的权限管理需求,例如可按用户分配不同表的查询权限。
- 可以断开任意账号的连接。
说明
- 当创建的高权限账号是该实例的第一个高权限账号时,这个账号将是标准系统数据库template1中默认模式Public Schema的Owner。
- CREATE DATABASE命令默认通过复制template1来创建数据库。通过该方式创建的数据库,Public Schema的Owner均为第一个高权限账号。
- 第一个高权限账号的Comment开头会包含说明:template1 public schema owner。
|
普通账号 |
- 可以通过控制台、API或者SQL语句创建和管理。
- 一个实例可以创建多个普通账号 。
- 需要手动给普通账号授予特定数据库的权限。
- 普通账号不能创建和管理其他账号,也不能断开其他账号的连接。
|
注意事项
- RDS PostgreSQL实例(本地盘)支持在控制台创建一个高权限账号(高权限账号创建后无法删除),以及通过SQL命令创建、管理普通账号。
- RDS PostgreSQL实例(云盘)支持在控制台创建多个高权限账号和普通账号,也可以通过SQL命令创建、管理普通账号。
- 如果您要迁移本地数据库到RDS,请在RDS实例中创建与本地数据库一致的迁移账号和数据库。
- 分配数据库账号权限时,请按最小权限原则和业务角色创建账号,并合理分配只读和读写权限。必要时可以把数据库账号和数据库拆分成更小粒度,使每个数据库账号只能访问其业务之内的数据。如果不需要数据库写入操作,请分配只读权限。
- 为保障数据库的安全,请将数据库账号的密码设置为强密码,并定期更换。
云盘实例创建账号
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
- 在左侧导航栏中选择账号管理。
- 单击创建账号。
- 设置如下参数。
参数 |
说明 |
数据库账号: |
- 长度为2~63个字符。
- 由小写字母、数字或下划线组成。
- 以字母开头,以字母或数字结尾。
- 不能和已有的账号名重复。
|
账号类型: |
RDS PostgreSQL实例支持两种数据库账号:高权限账号和普通账号。
- 高权限账号拥有所有数据库的所有操作权限。
- 普通账号拥有已授权数据库(owner)的所有操作权限。
说明 操作权限包括SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER。
|
密码: |
- 长度为8~32个字符。
- 由大写字母、小写字母、数字、特殊字符中的任意三种组成。
- 特殊字符为!@#$%^&*()_+-=
|
确认密码: |
再次输入相同的密码。 |
备注说明: |
填写备注信息。 |
- 单击确定。
云盘实例创建数据库
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
- 在左侧导航栏单击数据库管理。
- 单击创建数据库。
- 设置如下参数。
参数 |
说明 |
数据库(DB)名称 |
- 最长63个字符。
- 由小写字母、数字、中划线、下划线组成。
- 以字母开头,以字母或数字结尾。
|
支持字符集 |
数据库的字符集。 |
Collate |
字符串排序规则。 |
Ctype |
字符分类。 |
授权账号: |
设置数据库的所有者,对数据库拥有ALL权限。 |
备注说明: |
填写备注信息。 |
- 单击创建。
本地盘实例创建账号
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
- 在左侧导航栏中选择账号管理。
- 单击创建初始账号。
- 设置如下参数。
参数 |
说明 |
数据库账号: |
- 长度为2~16个字符。
- 由小写字母、数字或下划线组成。
- 以字母开头,以字母或数字结尾。
- 不能和已有的账号名重复。
|
密码: |
- 长度为8~32个字符。
- 由大写字母、小写字母、数字、特殊字符中的任意三种组成。
- 特殊字符为!@#$%^&*()_+-=
|
确认密码: |
再次输入相同的密码。 |
- 单击创建。
说明 至此高权限账号已创建完成。如需创建普通账号,请参见后续步骤。
- 单击页面右上角的登录数据库,进入DMS登录页面。
- 设置如下参数。
参数 |
说明 |
网络地址:端口 |
填写实例的内网连接地址和内网端口。详情请参见查看或修改内外网地址和端口。 |
数据库用户名 |
填写要访问数据库的账号名称。 |
密码 |
账号对应的密码。 |
- 单击登录。
说明 若出现将DMS服务器的IP段加入到RDS白名单中的提示,单击
设置白名单即可。
- 成功登录RDS实例后,在页面上方的菜单栏单击 。
- 在SQL窗口中按照如下语法,创建普通账号。
CREATE USER name [ [ WITH ] option [ ... ] ]
where option can be:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| CREATEUSER | NOCREATEUSER
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| CONNECTION LIMIT connlimit
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| IN GROUP role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
| USER role_name [, ...]
| SYSID uid
例如您要创建一个名称为test2、密码为123456的用户,可以执行如下命令:
create user test2 password '123456';
本地盘实例创建数据库
- 连接PostgreSQL实例。
- 在SQL窗口中按照如下语法,创建数据库。
CREATE DATABASE name
[ [ WITH ] [ OWNER [=] user_name ]
[ TEMPLATE [=] template ]
[ ENCODING [=] encoding ]
[ LC_COLLATE [=] lc_collate ]
[ LC_CTYPE [=] lc_ctype ]
[ TABLESPACE [=] tablespace_name ]
[ CONNECTION LIMIT [=] connlimit ] ]
例如您要创建一个名称为test的数据库,可以执行如下命令:
create database test;
常见问题
创建的账号在只读实例上可以用吗?
答:主实例创建的账号会同步到只读实例,只读实例无法管理账号。账号在只读实例上只能进行读操作,不能进行写操作。