在使用RDS的過程中,由于superuser不完全放開,因此我們建議用戶在使用數據庫時遵循單獨建立用戶并通過schema管理用戶的私有空間。
說明 本例中,myuser 是建立實例時創建的管理賬號,newuser 是當前需要新建的賬號。
方案一
- 通過初始賬號 myuser 建立有登錄權限的用戶。
CREATE USER newuser LOGIN PASSWORD 'password';
參數說明如下:
- USER:要創建的用戶名。
- 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: 要創建的用戶名。
- 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.