三. PostgreSQL 修改密碼和基本信息查看

修改密碼

在上一節(jié)中我們講了兩種連接PostgreSQL的方式酵熙,分別是命令行連接和圖形界面連接蒜埋。這里不知道大家有沒有發(fā)現(xiàn)一個(gè)問題,就是不管是在命令行連接或者是圖形界面連接的時(shí)候,我們都沒有要求大家設(shè)置密碼或者輸入密碼议惰?
這是因?yàn)椋赑ostgreSQL安裝完成后乡恕,我們使用/usr/pgsql-9.6/bin/postgresql96-setup initdb命令進(jìn)行初始化的時(shí)候言询,并沒有通過這個(gè)命令指定初始用戶postgres的密碼俯萎。當(dāng)我們在服務(wù)器命令行界面使用peer認(rèn)證直接登陸時(shí),沒要求我們輸入密碼运杭。但是要記住夫啊,這樣使用數(shù)據(jù)庫是非常危險(xiǎn)的,特別是你的數(shù)據(jù)庫布置在云服務(wù)器的時(shí)候辆憔,很可能分分鐘就被黑掉撇眯。在圖形界面連接的時(shí)候,我們還設(shè)置了使用trust認(rèn)證方式虱咧,這種方式默認(rèn)允許不使用密碼即可進(jìn)行連接熊榛,也是非常危險(xiǎn)的。為了避免這些意外情況腕巡,我們今天來介紹一下如何設(shè)置以及修改用戶的密碼来候。

1. 初始化時(shí)設(shè)置密碼

當(dāng)使用rpm包或PostgreSQL的官方y(tǒng)um源安裝好PostgreSQL以后,不要使用/usr/pgsql-9.6/bin/postgresql96-setup initdb命令進(jìn)行初始化逸雹。而是使用initdb命令营搅。這個(gè)命令的用法如下:
initdb [命令選項(xiàng)] [--pgdata | -D] 目錄名
常用命令選項(xiàng)有:

-A  method:設(shè)置認(rèn)證方式,比如method的值可以是peer梆砸、ident转质、md5、trust等值
--auth-host=method:這個(gè)選項(xiàng)用來設(shè)置遠(yuǎn)程主機(jī)連接的認(rèn)證方法
--auth-local=method:這個(gè)選項(xiàng)用來設(shè)置本地主機(jī)連接的認(rèn)證方法
-E encoding:設(shè)置服務(wù)器端的編碼方式
-U user   :設(shè)置服務(wù)器的超級用戶
--pwfile=filename:設(shè)置超級用戶的密碼文件帖世,從filename文件中的第一行讀取休蟹,一般用于設(shè)置比較復(fù)雜的密碼,或者用于自動(dòng)化處理日矫。
-W     :后面不帶任何數(shù)值赂弓,表示在初始化時(shí)手動(dòng)輸入密碼。
-D/--pgdata:這個(gè)用來設(shè)置存放PostgreSQL數(shù)據(jù)庫文件和配置文件所在目錄哪轿。

介紹完這個(gè)命令的用法以后盈魁,我們嘗試使用這個(gè)命令來初始化數(shù)據(jù)庫并給postgres用戶設(shè)置一個(gè)密碼。這個(gè)命令是不能用root用戶來允許的窃诉,因此先切換到postgres用戶:
su - postgres
這個(gè)命令默認(rèn)是在/usr/pgsql-9.6/bin/目錄下杨耙,因此使用絕對路徑來允許這個(gè)命令:
/usr/pgsql-9.6/bin/initdb -A md5 -U postgres -W -D 9.6/data
在這個(gè)命令中,我們使用的是md5加密密碼飘痛,超級用戶是postgres珊膜,目錄是postgres用戶的家目錄下的9.6/data/目錄,完整路徑是/var/lib/psql/9.6/data/宣脉。執(zhí)行過程如下:

初始化過程

因?yàn)槲覀儧]有設(shè)置編碼模式车柠,從圖中我們可以看到默認(rèn)使用的是UTF8編碼,然后執(zhí)行過程中有讓我們輸入密碼,輸入密碼確認(rèn)以后竹祷,開始創(chuàng)建目錄介蛉,設(shè)置各種參數(shù)。配置完成以后還給出了啟動(dòng)PostgreSQL服務(wù)的命令:
/usr/pgsql-9.6/bin/pg_ctl -D 9.6/data -l logfile start
pg_ctl是postgresql自帶的管理工具溶褪,也是只能在普通用戶權(quán)限下執(zhí)行的命令币旧。這里我們先暫時(shí)不使用這個(gè)工具。初始完成以后猿妈,我們使用systemctl啟動(dòng)PostgreSQL服務(wù)器:
systemctl start postgresql-9.6
然后連接數(shù)據(jù)庫:
psql -U postgres

連接過程

此時(shí)登錄就可以看到已經(jīng)要求你輸入賬號(hào)密碼了仰禽,輸入剛才我們初始化時(shí)設(shè)置的密碼枕扫,成功登陸。我們再看看配置文件pg_hba.conf,如下所示:

image.png

此時(shí)所有的默認(rèn)認(rèn)證方式都是我們剛才設(shè)置的md5認(rèn)證方式翩腐。說明設(shè)置成功幼东。
以上就是初始化時(shí)設(shè)置密碼的所有內(nèi)容颊糜,讀者還可以自己嘗試一下使用密碼文件的方式來設(shè)置密碼凑阶。

2. 初始化完成后修改密碼

如果使用的是默認(rèn)的初始化模式,則默認(rèn)使用的是peer和ident的認(rèn)證方式芬萍,配置好這兩種認(rèn)證方式以后尤揣,是不需要密碼就可以登陸。這時(shí)候可以先登陸到PostgreSQL服務(wù)器柬祠,然后修改密碼北戏。修改密碼有兩種方式:

  • psql命令工具修改密碼
  • PostgreSQL的SQL語句修改密碼
    psql用來修改的命令工具是\password,命令行界面登錄成功以后漫蛔,輸入這個(gè)命令嗜愈,就可以直接修改當(dāng)前用戶的密碼。比如我們是postgres用戶登陸莽龟,輸入這個(gè)密碼則修改postgres的密碼蠕嫁,若是其他用戶,則修改其他用戶的密碼毯盈,如下所示:
\passwd設(shè)置密碼

連續(xù)輸入兩遍密碼剃毒,即成功修改,退出以后重新登陸時(shí)就需要輸入新密碼奶镶。

SQL語句用來修改密碼的格式如下:
ALTER USER username PASSWORD 'passwordtext';
我們修改postgres用戶的密碼就是這樣寫:
ALTER USER postgres PASSWORD 'postgres_pass'

SQL命令修改密碼

修改成功后會(huì)提示ALTER ROLE迟赃,這里是為了給大家演示,才設(shè)置這樣的密碼厂镇,但是大家自己在使用的時(shí)候不要設(shè)置這種比較容易猜到的密碼。

密碼修改成功以后左刽,將配置文件里的認(rèn)證方式修改為md5認(rèn)證

image.png

然后重啟PostgreSQL服務(wù)器
systemctl restart postgresql-9.6
重啟完成后捺信,重新登陸就需要輸入密碼登陸了,不管是命令行登錄還是圖形工具登錄。

基本信息查看

正常登錄服務(wù)器以后迄靠,我們就可以查看服務(wù)器的一些基本信息了秒咨。目前登錄的用戶基本上都是postgres這個(gè)超級用戶,在后面講到用戶管理的時(shí)候掌挚,才會(huì)涉及到不同用戶對不同表的權(quán)限問題雨席,這里假設(shè)可以看到所有的內(nèi)容。

1. 查看服務(wù)器端版本信息

(1)通過psql命令查看吠式,命令是psql --version

psql查看版本

(2)登錄后通過SQL語句查看陡厘,命令是:SELECT version()

SQL語句查看版本

這個(gè)命令查看的信息更詳細(xì),可以看到服務(wù)器版本特占,平臺(tái)型號(hào)糙置,編譯信息等。

2. 查看數(shù)據(jù)庫信息

(1)查看有多少數(shù)據(jù)庫是目,命令是:\l

查看數(shù)據(jù)庫

剛初始化完成的數(shù)據(jù)庫只有3個(gè)數(shù)據(jù)庫谤饭,一個(gè)是postgres默認(rèn)數(shù)據(jù)庫,另外兩個(gè)是模板數(shù)據(jù)庫template0和template1懊纳,PostgreSQL支持?jǐn)?shù)據(jù)庫繼承揉抵,因此可以直接從模板繼承生成新的數(shù)據(jù)庫。template0是不可刪除的數(shù)據(jù)庫嗤疯,template1可以刪除功舀。template1刪除以后會(huì)自動(dòng)從template0繼承重新生成。

(2)查看數(shù)據(jù)庫上的表信息身弊,命令是:\d辟汰,顯示當(dāng)前數(shù)據(jù)庫下的所有表:

查看庫上的表

默認(rèn)的postgres數(shù)據(jù)庫上沒有任何表信息,因此看到的是沒有找到關(guān)聯(lián)表的提示阱佛。而如果是已經(jīng)有很多表的數(shù)據(jù)庫帖汞,則顯示如下:

查看庫上的表

會(huì)顯示以后的所有表信息,包括表的模式凑术、名稱翩蘸、類型、所有者等等淮逊。如果想看表的具體信息催首,則命令是\d table_name,比如想看上圖中的perm_account表的具體信息泄鹏,則命令是:
\d perm_account

image.png

會(huì)顯示出該表中的字段定義郎任、索引等詳細(xì)信息。
在上面的操作里备籽,我們從postgres數(shù)據(jù)庫切換到datacenter數(shù)據(jù)庫舶治,使用的命令格式是\c databasename,從postgres切換到datacenter就是\c datacenter

image.png

提示中可以看到,是以postgres用戶的身份切換到datacenter數(shù)據(jù)庫霉猛,命令行前端也從postgres變成了datacenter尺锚。

(3)查看數(shù)據(jù)庫啟動(dòng)時(shí)間
通過函數(shù)來計(jì)算:
SELECT date_trunc('second', current_timestamp - pg_postmaster_start_time()) as uptime;

image.png

(4)查看數(shù)據(jù)庫占用的硬盤空間和表占用的硬盤空間
查看數(shù)據(jù)庫硬盤空間占用情況命令使用函數(shù)pg_database_size('databasename'),一般查看的是當(dāng)前數(shù)據(jù)庫惜浅,使用函數(shù)current_database():
SELECT pg_database_size(current_database());

image.png

這里顯示的單位是bytes瘫辩,如果想要更易理解的顯示,則需要另外一個(gè)函數(shù)pg_size_pretty()坛悉,如下圖所示:

image.png

如果要看看其他數(shù)據(jù)庫伐厌,則命令是:

image.png

pg_database_size()里加上數(shù)據(jù)庫名稱即可。

查看表所占用的空間使用函數(shù)pg_relation_size()吹散,這個(gè)函數(shù)返回的是表內(nèi)所有數(shù)據(jù)所占用的硬盤空間弧械,而對于一張數(shù)據(jù)表來說,除了表內(nèi)的數(shù)據(jù)空民,還有根據(jù)表的字段建立的索引刃唐、視圖、臨時(shí)表等等信息界轩,如果要加上這些內(nèi)容的空間占用画饥,則需要使用pg_total_relation_size()函數(shù)。如下圖所示:

表占用空間
表和其他內(nèi)容一起所占空間

可以看到浊猾,相同的一張表抖甘,帶有各種索引信息所占用的空間比純表要大很多。

總結(jié):

這一章里我們學(xué)習(xí)的內(nèi)容是如何給用戶設(shè)置密碼葫慎、如何配置用戶的認(rèn)證方式以及如何查看用戶的基本信息衔彻。

  • 設(shè)置密碼分為兩種方式,分別是psql命令行形式和SQL語句形式
  • 用戶認(rèn)證可以在初始化時(shí)進(jìn)行配置偷办,也可以在初始化完成后修改pg_hba.conf文件進(jìn)行配置
  • 查看表的信息也是通過兩種方式艰额,一種是psql的命令行工具,例如\l椒涯、\d柄沮、\c等,另外一種是PostgreSQL提供的函數(shù)废岂,例如pg_relation_size()等祖搓。這里要注意的一點(diǎn)是,PostgreSQL提供的函數(shù)如果帶參數(shù)時(shí)湖苞,要用引號(hào)將參數(shù)引起來否則會(huì)報(bào)錯(cuò)拯欧,如下所示,會(huì)提示表不存在袒啼。:
函數(shù)錯(cuò)誤用法示例

以上就是這一章的所有內(nèi)容哈扮。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纬纪,一起剝皮案震驚了整個(gè)濱河市蚓再,隨后出現(xiàn)的幾起案子滑肉,更是在濱河造成了極大的恐慌,老刑警劉巖摘仅,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件靶庙,死亡現(xiàn)場離奇詭異,居然都是意外死亡娃属,警方通過查閱死者的電腦和手機(jī)六荒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矾端,“玉大人掏击,你說我怎么就攤上這事≈让” “怎么了砚亭?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長殴玛。 經(jīng)常有香客問我捅膘,道長,這世上最難降的妖魔是什么滚粟? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任寻仗,我火速辦了婚禮,結(jié)果婚禮上凡壤,老公的妹妹穿的比我還像新娘署尤。我一直安慰自己,他們只是感情好亚侠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布曹体。 她就那樣靜靜地躺著,像睡著了一般盖奈。 火紅的嫁衣襯著肌膚如雪混坞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天钢坦,我揣著相機(jī)與錄音究孕,去河邊找鬼。 笑死爹凹,一個(gè)胖子當(dāng)著我的面吹牛厨诸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播禾酱,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼微酬,長吁一口氣:“原來是場噩夢啊……” “哼绘趋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颗管,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤陷遮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后垦江,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帽馋,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年比吭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绽族。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡衩藤,死狀恐怖吧慢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赏表,我是刑警寧澤检诗,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站底哗,受9級特大地震影響岁诉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜跋选,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一涕癣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧前标,春花似錦坠韩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至俭尖,卻和暖如春氢惋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稽犁。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工焰望, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人已亥。 一個(gè)月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓熊赖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親虑椎。 傳聞我的和親對象是個(gè)殘疾皇子震鹉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容