1. 程式人生 > 其它 >PostgreSQL 13 新建資料庫、使用者及配置

PostgreSQL 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;