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;

 最后修改某數據庫的默認模式:

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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM