- 概要
- 資料庫切換角色
- 重新創建資料庫
- 已有資料庫
概要
postgresql 默認的賬戶 postgres 權限太高, 當一個資料庫服務上有多個專案的資料庫時, 大家都通過 postgres 賬戶來連接資料庫安全性太差.
最好的方式是, 每個資料庫有自己的賬戶, 該賬戶只能查看特定的資料庫, 無法訪問其他資料庫.
最近有幾個專案, 開發時都是直接用 postgres 賬戶, 發布時, 由于安全性的要求, 無法再使用此帳戶.
因此, 需要創建新的不同帳戶來連接不同的資料庫, 調整程序中遇到的一些坑記錄如下:
資料庫切換角色
重新創建資料庫
這種情況, 一般是因為之前直接把表創建在了默認的 postgres 資料庫中了.
這是, 需要創建新的資料庫和帳戶, 并把資料遷移到新的資料庫.
1 # 創建新賬戶
2 CREATE USER testuser WITH PASSWORD 'testpasswd';
3
4 # 創建新資料庫并將 OWNER 設定為新創建的帳戶
5 CREATE DATABASE testdb OWNER testuser;
6
7 # 給新用戶授權
8 GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser;
創建資料庫之后, 接著使用上面創建的 testuser 來創建 schema 和 table
這樣, testuser 就有了對這些 schema 和 table 訪問的權限
已有資料庫
對于已有的資料庫, 其中的 schema 和 table 之前是用 postgres 帳戶創建的.
這時, 先給新建的賬戶賦予資料庫權限
1 # 創建新賬戶
2 CREATE USER testuser WITH PASSWORD 'testpasswd';
3
4 # 將資料庫 OWNER 設定為新創建的帳戶
5 ALTER DATABASE testdb OWNER TO testuser;
6
7 # 給新用戶授權
8 GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser;
雖然給 testuser 賬戶賦予了資料庫層的所有權限, 但是對其中的 schema 和 table, 仍然沒有權限.
需要針對 schema 和 table 再次授權
1 # 賦予用戶schema的權限
2 GRANT ALL PRIVILEGES ON SCHEMA illuminant TO testuser;
3
4 # 賦予schema下所有表的權限
5 GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA illuminant TO testuser;
這樣, 就可以用新賬戶訪問新資料庫了.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/247335.html
標籤:其他
