環境 Debian 11
PostgreSQL 安裝后會創建一個postgres的系統賬戶,切換賬戶可更方便的操作,不切換用戶使用psql登錄需要手動指定用戶和數據庫等信息:
psql -h 127.0.0.1 -p 5432 -U postgres -d postgres
當然,如果是剛安裝還是要切換到系統postgres用戶下進行操作,因為你可能不知道數據庫中postgres用戶的密碼
PostgreSQL封裝了一個shell命令 可以創建一個數據庫:
1 su - postgres 2 createdb db_name
創建成功后什么都不會顯示, 現在可以用psql登錄進去看看效果:
1 # postgres用戶下直接輸入psql 可以進入psql的命令界面 2 psql 3 postgres=#
當然,之前創建數據庫的步驟也可以在psql的界面里運行,之前已經創建好了的話再執行會提示你該數據庫已存在:
CREATE DATABASE db_name WITH OWNER postgres ENCODING UTF8 TEMPLATE template1;
看看剛創建的數據庫 \c可以切換到剛創建數據庫:
1 postgres=# \l 2 \c db_name
新建一個角色,PostgreSQL手冊說“角色”和“用戶”沒有本質上的區別,有LOGIN權限的角色就是用戶:
1 CREATE ROLE username 2 # 輸入\du可以看到剛創建的用戶和postgres用戶 3 \du
更改新角色權限,增加建庫和建角色的權限:
ALTER ROLE username WITH CREATEDB CREATEROLE;
可以用\du查看下,應該增加了Create role 和 Create DB兩項
然后再創建一個用戶:
CREATE USER user2name WITH ENCRYPTED PASSWORD '123abc';
把user2name變成username的成員,這樣user2name應該就會有username的權限了
GRANT username TO user2name;
再輸入\du查看,會發現 Member of 那一欄 hoist 的屬性變成了 username
其實自己用創建一個用戶就行了
更改剛創建的數據庫所有權:
ALTER DATABASE db_name OWNER TO user2name;
======================================================================
繼續,創建個schema (叫做模式)
CREATE SCHEMA schema_name;
更改模式所有者為user2name,並賦予user2name使用模式的權限
1 ALTER SCHEMA schema_name OWNER TO user2name; 2 GRANT USAGE ON SCHEMA schema_name TO user2name;
賦予user2name用戶各種權限:
1 #賦予訪問數據庫權限 2 GRANT CONNECT ON DATABASE db_name TO user2name; 3 #賦予各種操作權限 4 GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA schema_name TO user2name; 5 #賦予序列權限 6 GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA schema_name TO user2name; 7 #默認權限 8 ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT SELECT,INSERT,UPDATE,DELETE ON TABLES TO user2name; 9 ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT ALL PRIVILEGES ON SEQUENCES TO user2name;
最后修改某數據庫的默認模式:
1 SET search_path TO schema_name; 2 ALTER database db_name SET search_path TO schema_name;
其他:
1 # 回收所有用戶(public)在 public schema 上的 create 權限 2 REVOKE CREATE ON SCHEMA public FROM public;