PostgreSQL 13 新建資料庫、使用者及配置
阿新 • • 發佈:2021-10-13
環境 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;