在使用 RDS 的过程中,由于 superuser 不完全放开,因此我们建议用户在使用数据库时遵循单独建立用户并通过 schema 管理用户的私有空间。
[backcolor=transparent]说明: 本例中,myuser 是建立实例时创建的管理账号,newuser 是当前需要新建的账号。
方案一
通过初始帐号 myuser 建立有登录权限的用户。[backcolor=transparent]CREATE USER newuser LOGIN PASSWORD [backcolor=transparent]'password'[backcolor=transparent];
参数说明如下;
- USER:要创建的用户名,如 [backcolor=transparent]newuser
- password:用户名对应的密码,如 [backcolor=transparent]password
为新用户建立schema。
- [backcolor=transparent]CREATE SCHEMA newuser[backcolor=transparent];
- [backcolor=transparent]GRANT newuser to myuser[backcolor=transparent];
- [backcolor=transparent]ALTER SCHEMA newuser OWNER TO newuser[backcolor=transparent];
- [backcolor=transparent]REVOKE newuser FROM myuser[backcolor=transparent];
[backcolor=transparent]说明:
如果在进行 ALTER SCHEMA newuser OWNER TO newuser 之前没有将 myuser 的角色赋予 newuser,将会出现如下权限问题:
-
[backcolor=transparent]
ERROR[backcolor=transparent]
:[backcolor=transparent]
must be member of role [backcolor=transparent]
"newuser"
从安全角度出发,在处理完 OWNER 的授权后,请将 newuser 移出 myuser 角色以提高安全性。
使用 newuser 登录数据库。
- [backcolor=transparent]psql [backcolor=transparent]-[backcolor=transparent]U newuser [backcolor=transparent]-[backcolor=transparent]h intranet4example[backcolor=transparent].[backcolor=transparent]pg[backcolor=transparent].[backcolor=transparent]rds[backcolor=transparent].[backcolor=transparent]aliyuncs[backcolor=transparent].[backcolor=transparent]com [backcolor=transparent]-[backcolor=transparent]p [backcolor=transparent]3433[backcolor=transparent] pg001
- [backcolor=transparent]Password[backcolor=transparent] [backcolor=transparent]for[backcolor=transparent] user newuser[backcolor=transparent]:
- [backcolor=transparent]psql[backcolor=transparent].[backcolor=transparent]bin [backcolor=transparent]([backcolor=transparent]9.4[backcolor=transparent].[backcolor=transparent]4[backcolor=transparent],[backcolor=transparent] server [backcolor=transparent]9.4[backcolor=transparent].[backcolor=transparent]1[backcolor=transparent])
- [backcolor=transparent]Type[backcolor=transparent] [backcolor=transparent]"help"[backcolor=transparent] [backcolor=transparent]for[backcolor=transparent] help[backcolor=transparent].
方案二
通过初始帐号 myuser 建立有登录权限的用户。[backcolor=transparent]CREATE USER newuser CREATEDB LOGIN PASSWORD [backcolor=transparent]'password'[backcolor=transparent];
参数说明如下;
- USER: 要创建的用户名,如 [backcolor=transparent]newuser
- password: 用户名对应的密码,如 [backcolor=transparent]password
- CREATEDB: 给用户赋予建立数据库的权限
使用新用户 newuser 登陆到数据库。
- [backcolor=transparent]psql [backcolor=transparent]-[backcolor=transparent]U [backcolor=transparent]<数据实例域名>[backcolor=transparent] [backcolor=transparent]-[backcolor=transparent]p [backcolor=transparent]3433[backcolor=transparent] [backcolor=transparent]-[backcolor=transparent]U newuser [backcolor=transparent]<数据库名>
- [backcolor=transparent]CREATE DATABASE
为新用户建立schema。
- [backcolor=transparent]CREATE SCHEMA newuser[backcolor=transparent];
- [backcolor=transparent]GRANT myuser to newuser[backcolor=transparent];
- [backcolor=transparent]ALTER SCHEMA myuser OWNER TO newuser[backcolor=transparent];
- [backcolor=transparent]REVOKE newuser FROM myuser[backcolor=transparent];
[backcolor=transparent]说明:
如果在进行 ALTER SCHEMA newuser OWNER TO newuser 之前没有将 myuser 的角色赋予 newuser,将会出现如下权限问题:
-
[backcolor=transparent]
ERROR[backcolor=transparent]
:[backcolor=transparent]
must be member of role [backcolor=transparent]
"newuser"
从安全角度出发,在处理完 OWNER 的授权后,请将 newuser 移出 myuser 角色以提高安全性。
使用 newuser 登录数据库。
- [backcolor=transparent]psql [backcolor=transparent]-[backcolor=transparent]U newuser [backcolor=transparent]-[backcolor=transparent]h intranet4example[backcolor=transparent].[backcolor=transparent]pg[backcolor=transparent].[backcolor=transparent]rds[backcolor=transparent].[backcolor=transparent]aliyuncs[backcolor=transparent].[backcolor=transparent]com [backcolor=transparent]-[backcolor=transparent]p [backcolor=transparent]3433[backcolor=transparent] pg001
- [backcolor=transparent]Password[backcolor=transparent] [backcolor=transparent]for[backcolor=transparent] user newuser[backcolor=transparent]:
- [backcolor=transparent]psql[backcolor=transparent].[backcolor=transparent]bin [backcolor=transparent]([backcolor=transparent]9.4[backcolor=transparent].[backcolor=transparent]4[backcolor=transparent],[backcolor=transparent] server [backcolor=transparent]9.4[backcolor=transparent].[backcolor=transparent]1[backcolor=transparent])
- [backcolor=transparent]Type[backcolor=transparent] [backcolor=transparent]"help"[backcolor=transparent] [backcolor=transparent]for[backcolor=transparent] help[backcolor=transparent].