最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

PG技術(shù)大講堂 - Part 10:PostgreSQL數(shù)據(jù)庫管理

2023-03-09 14:40 作者:北京CUUG  | 我要投稿



PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內(nèi)容包括對PG基礎(chǔ)的認(rèn)知、包括安裝使用、包括角色權(quán)限、包括維護(hù)管理、、等內(nèi)容,希望對熱愛PG、學(xué)習(xí)PG的同學(xué)們有幫助,歡迎持續(xù)關(guān)注CUUG PG技術(shù)大講堂。

Part 10:PostgreSQL數(shù)據(jù)庫管理

內(nèi)容1:PostgreSQL數(shù)據(jù)庫結(jié)構(gòu)

內(nèi)容2:PostgreSQL數(shù)據(jù)庫級權(quán)限管理

內(nèi)容3:PG數(shù)據(jù)庫級環(huán)境參數(shù)設(shè)置


內(nèi)容4:PostgreSQL數(shù)據(jù)庫級屬性修改


10.1、數(shù)據(jù)庫結(jié)構(gòu)

數(shù)據(jù)庫集簇邏輯結(jié)構(gòu)每個數(shù)據(jù)庫存儲的對象(表、索引、視圖等等)是獨立的、私有的,每個數(shù)據(jù)庫類似于每個房間,從房間中取東西,就需要到房間里面;同理,要訪問某個數(shù)據(jù)庫中的對象,就需要登錄到指定的數(shù)據(jù)庫中。



PostgreSQL數(shù)據(jù)庫結(jié)構(gòu)

數(shù)據(jù)庫集群是由PostgreSQL服務(wù)器管理的數(shù)據(jù)庫的集合。PostgreSQL中的“數(shù)據(jù)庫集群”一詞并不意味著“一組數(shù)據(jù)庫服務(wù)器”。PostgreSQL服務(wù)器在單個主機(jī)上運(yùn)行,并管理單個數(shù)據(jù)庫群集。?

?數(shù)據(jù)庫是數(shù)據(jù)庫對象的集合。在關(guān)系數(shù)據(jù)庫理論中,數(shù)據(jù)庫對象是用來存儲或引用數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。堆(heap)表是一個典型的例子,它有很多類似于索引、序列、視圖、函數(shù)等等。在PostgreSQL中,數(shù)據(jù)庫本身也是數(shù)據(jù)庫對象,在邏輯上彼此分離。所有其他數(shù)據(jù)庫對象(如表、索引等)都屬于各自的數(shù)據(jù)庫。

PostgreSQL數(shù)據(jù)庫屬主

· Postgres中的數(shù)據(jù)庫屬主屬于創(chuàng)建者,只要有createdb的權(quán)限就可以創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫屬主不一定擁有存放在該數(shù)據(jù)庫中其它用戶創(chuàng)建的對象的訪問權(quán)限。

· 數(shù)據(jù)庫在創(chuàng)建后,允許public角色連接,即允許任何人連接。

· 數(shù)據(jù)庫在創(chuàng)建后,不允許除了超級用戶和owner之外的任何人在數(shù)據(jù)庫中創(chuàng)建schema。

· 數(shù)據(jù)庫在創(chuàng)建后,會自動創(chuàng)建名為public的schema,這個schema的all權(quán)限已經(jīng)賦予給了public角色,即允許任何人在里面創(chuàng)建對象,但對己存在的其它用戶的表不具有任何權(quán)限。


10.2、數(shù)據(jù)庫權(quán)限

CREATE:可以在指定數(shù)據(jù)庫創(chuàng)建schema的權(quán)限

CONNECT:可以連接到指定數(shù)據(jù)庫的權(quán)限TEMPORARY:可以創(chuàng)建臨時表的權(quán)限ALL:指定數(shù)據(jù)庫所有的權(quán)限語法:

GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }?

ON DATABASE 數(shù)據(jù)庫名稱 [, ...]?

TO role_specification [, ...] [ WITH GRANT OPTION ]

由于數(shù)據(jù)庫在創(chuàng)建后,允許public角色連接,即允許任何人連接。所以如果要取消某個用戶對指定數(shù)據(jù)庫連接的權(quán)限,需要先取消public的連接權(quán)限,再取消該用戶的連接權(quán)限。

--授權(quán)用戶連接數(shù)據(jù)庫的權(quán)限

grant connect on database db_name to user_name;

--撤銷用戶連接數(shù)據(jù)庫的權(quán)限

revoke connect on database db_name from public;

revoke connect on database db_name from user_name;

--查看哪些用戶有某個數(shù)據(jù)庫的connect權(quán)限

select datname,datacl from pg_database where datname='db_name';


10.3、數(shù)據(jù)庫環(huán)境設(shè)置

PostgreSQL參數(shù)設(shè)置分為實例級、數(shù)據(jù)庫級、用戶級和會話級,而有些參數(shù)可以在所有級別中設(shè)置,優(yōu)先級順序為會話級>用戶級>數(shù)據(jù)庫級>實例級。

數(shù)據(jù)庫參數(shù)配置語法:

ALTER DATABASE 名稱 SET 配置參數(shù) { TO | = } { 值 | DEFAULT }

ALTER DATABASE 名稱 SET 配置參數(shù) FROM CURRENT

ALTER DATABASE 名稱 RESET 配置參數(shù)

ALTER DATABASE 名稱 RESET ALL

配置示例(一):

--設(shè)置數(shù)據(jù)庫搜索路徑:

alter database postgres set search_path to "$user", public, schema_name;

--配置連接某個庫時可使用的工作內(nèi)存

alter database postgres set work_mem = '8MB';?

?--配置連接某個庫時可使用的維護(hù)內(nèi)存

alter database postgres set maintenance_work_mem TO '256MB';

配置示例(二):

--配置連接某個庫后使用的時區(qū)

alter database postgres set TimeZone to cet;alter database postgres set DateStyle to SQL, DMY;(重新登錄生效)

--配置連接某個庫后執(zhí)行語句最多時長(執(zhí)行1秒超時)

alter database postgres set statement_timeout =1000;

--配置連接某個庫后默認(rèn)的客戶端編碼,配置客戶端編碼為gbk,適用于數(shù)據(jù)庫編碼為utf8,應(yīng)用程序編碼為gbk的應(yīng)用

alter database postgres set client_encoding to gbk;

配置示例(三):

--配置某個庫使用日志記錄級別(設(shè)置后,對這個數(shù)據(jù)庫的訪問不記錄日志)

alter database postgres set log_statement=none;

--配置連接某個庫后的wal日志寫盤級別(設(shè)置后,該庫的更新操作只要求本地提交)

alter database postgres set synchronous_commit to local;

--配置連接某個庫后禁用某個規(guī)劃器(禁用indexonlyscan掃描)

alter database postgres set enable_indexonlyscan to off;

配置示例(四):

--配置連接某個庫后執(zhí)行出錯時中斷連接(對新會話生效)

alter database postgres set exit_on_error to on;

--重新連接后

select pg_backend_pid();

--執(zhí)行錯誤會導(dǎo)致連接中斷

select * from d1;

配置示例(五):

--查看所有個性化配置

\drds

--查詢數(shù)據(jù)庫的連接數(shù)限制只能查看數(shù)據(jù)字典表

select datname,datconnlimit from pg_database

--設(shè)置某個個性化設(shè)置為默認(rèn)值

ALTER DATABASE postgres reset exit_on_error;

--設(shè)置所有個性化設(shè)置為默認(rèn)值

ALTER DATABASE postgres reset ALL;


10.4、數(shù)據(jù)庫屬性修改

數(shù)據(jù)庫的屬性我們可以進(jìn)行修改,修改范圍是數(shù)據(jù)庫名字、屬主、表空間。

ALTER DATABASE 名稱 RENAME TO 新的名稱

ALTER DATABASE 名稱 OWNER TO { 新的屬主 | CURRENT_USER | SESSION_USER }

ALTER DATABASE 名稱 SET TABLESPACE 新的表空間

示例:


--修改數(shù)據(jù)庫名字

ALTER DATABASE newdb2 RENAME TO newdb3;

--修改數(shù)據(jù)庫屬主

ALTER DATABASE newdb3 OWNER TO u1;

--修改新表空間的名字

ALTER DATABASE newdb3 SET TABLESPACE new_tbl;




以上就是Part 10 - PostgreSQL數(shù)據(jù)庫管理 的內(nèi)容,歡迎進(jìn)群一起探討交流 釘釘交流群:35,82,24,60,釘釘群有專門講解公開課

往期課程,聯(lián)系cuug咨詢老師


PG技術(shù)大講堂 - Part 10:PostgreSQL數(shù)據(jù)庫管理的評論 (共 條)

分享到微博請遵守國家法律
玉树县| 平原县| 开封县| 华池县| 沅陵县| 大洼县| 化隆| 马鞍山市| 铜鼓县| 宽城| 张家港市| 安龙县| 北流市| 方正县| 昌都县| 惠水县| 永济市| 华宁县| 宜兰市| 安吉县| 衢州市| 镇坪县| 奎屯市| 城固县| 泸溪县| 吉安县| 永清县| 宕昌县| 贺州市| 昌宁县| 寻甸| 旌德县| 阿荣旗| 凤山县| 瑞昌市| 昭平县| 公安县| 金山区| 永修县| 伊金霍洛旗| 吉木乃县|