在使用 RDS 的過程中,由於 superuser 不完全放開,因此我們建議使用者在使用資料庫時遵循單獨建立使用者並通過 schema 系統管理使用者的私人空間。
说明 本例中,myuser 是建立執行個體時建立的管理帳號,newuser 是當前需要建立的帳號。
方案一
- 通過初始帳號 myuser 建立有登入許可權的使用者。
CREATE USER newuser LOGIN PASSWORD 'password';
參數說明如下;
- USER:要建立的使用者名,如 newuser
- password:使用者名對應的密碼,如 password
- 為新使用者建立schema。
CREATE SCHEMA newuser; GRANT newuser to myuser; ALTER SCHEMA newuser OWNER TO newuser; REVOKE newuser FROM myuser;
说明-
如果在進行
ALTER SCHEMA newuser OWNER TO newuser
之前沒有將 myuser 的角色賦予 newuser,將會出現如下許可權問題:ERROR: must be member of role "newuser"
-
從安全形度出發,在處理完 OWNER 的授權後,請將 newuser 移出 myuser 角色以提高安全性。
-
- 使用 newuser
登入資料庫。
psql -U newuser -h intranet4example.pg.rds.aliyuncs.com -p 3433 pg001 Password for user newuser: psql.bin (9.4.4, server 9.4.1) Type "help" for help.
方案二
- 通過初始帳號 myuser 建立有登入許可權的使用者。
CREATE USER newuser CREATEDB LOGIN PASSWORD 'password';
參數說明如下;
- USER: 要建立的使用者名,如 newuser
- password: 使用者名對應的密碼,如 password
- CREATEDB: 給使用者賦予建立資料庫的許可權
- 使用新使用者 newuser
登陸到資料庫。
psql -U <資料執行個體網域名稱> -p 3433 -U newuser <資料庫名> CREATE DATABASE
- 為新使用者建立schema。
CREATE SCHEMA newuser; GRANT myuser to newuser; ALTER SCHEMA myuser OWNER TO newuser; REVOKE newuser FROM myuser;
说明-
如果在進行
ALTER SCHEMA newuser OWNER TO newuser
之前沒有將 myuser 的角色賦予 newuser,將會出現如下許可權問題:ERROR: must be member of role "newuser"
-
從安全形度出發,在處理完 OWNER 的授權後,請將 newuser 移出 myuser 角色以提高安全性。
-
- 使用 newuser
登入資料庫。
psql -U newuser -h intranet4example.pg.rds.aliyuncs.com -p 3433 pg001 Password for user newuser: psql.bin (9.4.4, server 9.4.1) Type "help" for help.