开发者社区 问答 正文

附录:用户及 Schema 管理


在使用 RDS 的过程中,由于 superuser 不完全放开,因此我们建议用户在使用数据库时遵循单独建立用户并通过 schema 管理用户的私有空间。
[backcolor=transparent]说明: 本例中,myuser 是建立实例时创建的管理账号,newuser 是当前需要新建的账号。

方案一


  1. 通过初始帐号 myuser 建立有登录权限的用户。[backcolor=transparent]CREATE USER newuser LOGIN PASSWORD [backcolor=transparent]'password'[backcolor=transparent];

参数说明如下;
  • USER:要创建的用户名,如 [backcolor=transparent]newuser
  • password:用户名对应的密码,如 [backcolor=transparent]password

为新用户建立schema。
  1. [backcolor=transparent]CREATE SCHEMA newuser[backcolor=transparent];
  2. [backcolor=transparent]GRANT newuser to myuser[backcolor=transparent];
  3. [backcolor=transparent]ALTER SCHEMA newuser OWNER TO newuser[backcolor=transparent];
  4. [backcolor=transparent]REVOKE newuser FROM myuser[backcolor=transparent];

[backcolor=transparent]说明:

  • 如果在进行 ALTER SCHEMA newuser OWNER TO newuser 之前没有将 myuser 的角色赋予 newuser,将会出现如下权限问题:
    1. [backcolor=transparent]    ERROR[backcolor=transparent] :[backcolor=transparent]   must be member of role [backcolor=transparent] "newuser"

  • 从安全角度出发,在处理完 OWNER 的授权后,请将 newuser 移出 myuser 角色以提高安全性。

使用 newuser 登录数据库。
  1. [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
  2. [backcolor=transparent]Password[backcolor=transparent] [backcolor=transparent]for[backcolor=transparent] user newuser[backcolor=transparent]:
  3. [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])
  4. [backcolor=transparent]Type[backcolor=transparent] [backcolor=transparent]"help"[backcolor=transparent] [backcolor=transparent]for[backcolor=transparent] help[backcolor=transparent].


方案二


  1. 通过初始帐号 myuser 建立有登录权限的用户。[backcolor=transparent]CREATE USER newuser CREATEDB LOGIN PASSWORD [backcolor=transparent]'password'[backcolor=transparent];

参数说明如下;
  • USER: 要创建的用户名,如 [backcolor=transparent]newuser
  • password: 用户名对应的密码,如 [backcolor=transparent]password
  • CREATEDB: 给用户赋予建立数据库的权限

使用新用户 newuser 登陆到数据库。
  1. [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]<数据库名>
  2. [backcolor=transparent]CREATE DATABASE

为新用户建立schema。
  1. [backcolor=transparent]CREATE SCHEMA newuser[backcolor=transparent];
  2. [backcolor=transparent]GRANT myuser to newuser[backcolor=transparent];
  3. [backcolor=transparent]ALTER SCHEMA myuser OWNER TO newuser[backcolor=transparent];
  4. [backcolor=transparent]REVOKE newuser FROM myuser[backcolor=transparent];

[backcolor=transparent]说明:

  • 如果在进行 ALTER SCHEMA newuser OWNER TO newuser 之前没有将 myuser 的角色赋予 newuser,将会出现如下权限问题:
    1. [backcolor=transparent]   ERROR[backcolor=transparent] :[backcolor=transparent]   must be member of role [backcolor=transparent] "newuser"

  • 从安全角度出发,在处理完 OWNER 的授权后,请将 newuser 移出 myuser 角色以提高安全性。

使用 newuser 登录数据库。
  1. [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
  2. [backcolor=transparent]Password[backcolor=transparent] [backcolor=transparent]for[backcolor=transparent] user newuser[backcolor=transparent]:
  3. [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])
  4. [backcolor=transparent]Type[backcolor=transparent] [backcolor=transparent]"help"[backcolor=transparent] [backcolor=transparent]for[backcolor=transparent] help[backcolor=transparent].

展开
收起
云栖大讲堂 2017-10-17 16:48:29 1661 分享 版权
0 条回答
写回答
取消 提交回答