PG技術大講堂 - Part 10:PostgreSQL資料庫管理
PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內容包括對PG基礎的認知、包括安裝使用、包括角色許可權、包括維護管理、、等內容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續關注CUUG PG技術大講堂。
Part 10:PostgreSQL資料庫管理
內容1:PostgreSQL資料庫結構
內容2:PostgreSQL資料庫級許可權管理
內容3:PG資料庫級環境引數設定
內容4:PostgreSQL資料庫級屬性修改
10.1、資料庫結構
資料庫集簇邏輯結構每個資料庫儲存的物件(表、索引、檢視等等)是獨立的、私有的,每個資料庫類似於每個房間,從房間中取東西,就需要到房間裡面;同理,要訪問某個資料庫中的物件,就需要登入到指定的資料庫中。
PostgreSQL資料庫結構
資料庫叢集是由PostgreSQL伺服器管理的資料庫的集合。PostgreSQL中的“資料庫叢集”一詞並不意味著“一組資料庫伺服器”。PostgreSQL伺服器在單個主機上執行,並管理單個資料庫群集。
資料庫是資料庫物件的集合。在關聯式資料庫理論中,資料庫物件是用來儲存或引用資料的資料結構。堆(heap)表是一個典型的例子,它有很多類似於索引、序列、檢視、函式等等。在PostgreSQL中,資料庫本身也是資料庫物件,在邏輯上彼此分離。所有其他資料庫物件(如表、索引等)都屬於各自的資料庫。
PostgreSQL資料庫屬主
· Postgres中的資料庫屬主屬於建立者,只要有createdb的許可權就可以建立資料庫,資料庫屬主不一定擁有存放在該資料庫中其它使用者建立的物件的訪問許可權。
· 資料庫在建立後,允許public角色連線,即允許任何人連線。
· 資料庫在建立後,不允許除了超級使用者和owner之外的任何人在資料庫中建立schema。
· 資料庫在建立後,會自動建立名為public的schema,這個schema的all許可權已經賦予給了public角色,即允許任何人在裡面建立物件,但對己存在的其它使用者的表不具有任何許可權。
10.2、資料庫許可權
CREATE:可以在指定資料庫建立schema的許可權
CONNECT:可以連線到指定資料庫的許可權TEMPORARY:可以建立臨時表的許可權ALL:指定資料庫所有的許可權語法:
GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
ON DATABASE 資料庫名稱 [, ...]
TO role_specification [, ...] [ WITH GRANT OPTION ]
由於資料庫在建立後,允許public角色連線,即允許任何人連線。所以如果要取消某個使用者對指定資料庫連線的許可權,需要先取消public的連線許可權,再取消該使用者的連線許可權。
--授權使用者連線資料庫的許可權
grant connect on database db_name to user_name;
--撤銷使用者連線資料庫的許可權
revoke connect on database db_name from public;
revoke connect on database db_name from user_name;
--檢視哪些使用者有某個資料庫的connect許可權
select datname,datacl from pg_database where datname='db_name';
10.3、資料庫環境設定
PostgreSQL引數設定分為例項級、資料庫級、使用者級和會話級,而有些引數可以在所有級別中設定,優先順序順序為會話級>使用者級>資料庫級>例項級。
資料庫引數配置語法:
ALTER DATABASE 名稱 SET 配置引數 { TO | = } { 值 | DEFAULT }
ALTER DATABASE 名稱 SET 配置引數 FROM CURRENT
ALTER DATABASE 名稱 RESET 配置引數
ALTER DATABASE 名稱 RESET ALL
配置示例(一):
--設定資料庫搜尋路徑:
alter database postgres set search_path to "$user", public, schema_name;
--配置連線某個庫時可使用的工作記憶體
alter database postgres set work_mem = '8MB';
--配置連線某個庫時可使用的維護記憶體
alter database postgres set maintenance_work_mem TO '256MB';
配置示例(二):
--配置連線某個庫後使用的時區
alter database postgres set TimeZone to cet;alter database postgres set DateStyle to SQL, DMY;(重新登入生效)
--配置連線某個庫後執行語句最多時長(執行1秒超時)
alter database postgres set statement_timeout =1000;
--配置連線某個庫後預設的客戶端編碼,配置客戶端編碼為gbk,適用於資料庫編碼為utf8,應用程式編碼為gbk的應用
alter database postgres set client_encoding to gbk;
配置示例(三):
--配置某個庫使用日誌記錄級別(設定後,對這個資料庫的訪問不記錄日誌)
alter database postgres set log_statement=none;
--配置連線某個庫後的wal日誌寫盤級別(設定後,該庫的更新操作只要求本地提交)
alter database postgres set synchronous_commit to local;
--配置連線某個庫後禁用某個規劃器(禁用indexonlyscan掃描)
alter database postgres set enable_indexonlyscan to off;
配置示例(四):
--配置連線某個庫後執行出錯時中斷連線(對新會話生效)
alter database postgres set exit_on_error to on;
--重新連線後
select pg_backend_pid();
--執行錯誤會導致連線中斷
select * from d1;
配置示例(五):
--檢視所有個性化配置
\drds
--查詢資料庫的連線數限制只能檢視資料字典表
select datname,datconnlimit from pg_database
--設定某個個性化設定為預設值
ALTER DATABASE postgres reset exit_on_error;
--設定所有個性化設定為預設值
ALTER DATABASE postgres reset ALL;
10.4、資料庫屬性修改
資料庫的屬性我們可以進行修改,修改範圍是資料庫名字、屬主、表空間。
ALTER DATABASE 名稱 RENAME TO 新的名稱
ALTER DATABASE 名稱 OWNER TO { 新的屬主 | CURRENT_USER | SESSION_USER }
ALTER DATABASE 名稱 SET TABLESPACE 新的表空間
示例:
--修改資料庫名字
ALTER DATABASE newdb2 RENAME TO newdb3;
--修改資料庫屬主
ALTER DATABASE newdb3 OWNER TO u1;
--修改新表空間的名字
ALTER DATABASE newdb3 SET TABLESPACE new_tbl;
以上就是Part 10 - PostgreSQL資料庫管理 的內容,歡迎進群一起探討交流,釘釘交流群:35,82,24,60,釘釘群有專門講解公開課
往期課程,聯絡cuug諮詢老師
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31544987/viewspace-2938915/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PG技術大講堂 - Part 3:PostgreSQL建庫與使用SQL
- PostgreSQL技術大講堂 - Part 8:PG物件許可權管理SQL物件
- PostgreSQL技術大講堂 - Part 6:PG使用者與角色管理SQL
- 從小白到專家 PostgreSQL技術大講堂 - Part 5:PG資料庫結構SQL資料庫
- PostgreSQL技術大講堂 - Part 9:pg_hba.conf配置SQL
- PG技術大講堂 - Part 4:PostgreSQL例項結構SQL
- PostgreSQL技術大講堂 - Part 7:PG使用者schema相互關係SQL
- PostgreSQL技術大講堂 - Part 2:PostgreSQL原始碼安裝SQL原始碼
- PostgreSQL技術大講堂 - 第32講:資料庫引數調整SQL資料庫
- 從小白到專家 PG技術大講堂 - Part 2:PG原始碼安裝原始碼
- PG技術大講堂 - 第13講:PostgreSQL Full-Page Writes 全頁寫SQL
- PostgreSQL技術大講堂 - 第33講:並行查詢管理SQL並行
- PostgreSQL技術大講堂 - 第31講:SQL調優技巧SQL
- 【PG管理】postgresql資料庫管理相關SQL資料庫
- PostgreSQL技術大講堂 - 第34講:調優工具pgBagder部署SQL
- PostgreSQL技術大講堂 - 第46講:poc-tpch測試SQL
- PostgreSQL技術大講堂 - 第45講:poc-tpcc測試SQL
- PostgreSQL技術大講堂 - 第72講:索引與SQL調優之禁忌之戀SQL索引
- 技術乾貨 | 阿里雲資料庫PostgreSQL 13大版本揭秘阿里資料庫SQL
- 大資料測試技術——課堂測試大資料
- 【PG結構】Postgresql資料庫資料目錄說明SQL資料庫
- postgresql 資料庫基本管理SQL資料庫
- 大資料技術與應用課堂測試-資料清洗同步大資料
- 《大型資料庫技術》MySQL管理維護資料庫MySql
- 【PG常用命令】postgresql資料庫統計物件大小SQL資料庫物件
- 開源資料庫大會技術分享資料庫
- pg_resetwal pg_resetxlog 重整 pg資料庫 wal 與pg_controldata 。 資料庫恢復。資料庫LDA
- Part I Basic Database Administration (資料庫基本管理)Database資料庫
- 沃趣微講堂 | Oracle叢集技術(一)Oracle
- PG 資料庫 從阿里雲pg rds 同步資料。資料庫阿里
- 【PG資料庫】PG資料庫的安裝及連線方法資料庫
- PG-pg資料庫安裝vector資料庫
- 今天開講,6 大演講主題、5 位技術大咖!龍蜥大講堂 5 月精彩直播預告搶先看
- 直播預告丨一名PGer帶你走進PostgreSQL的世界 - 雲和恩墨大講堂PG系列分享(1)SQL
- Postgresql10資料庫之更改資料庫的名稱SQL資料庫
- 資料庫週刊56丨2020國產資料庫大事記盤點;第十屆PG大會圓滿舉辦;2020技術年刊……資料庫
- 10個最熱門的大資料技術大資料
- 資料技術大融合,HSTAP資料庫有多少想象空間?資料庫