1. 安裝PostgreSQL源
rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
2. 執(zhí)行安裝命令
yum update
yum install postgresql94-server postgresql94-contrib
3. 驗(yàn)證是否安裝成功
執(zhí)行:
rpm -qa | grep postgres
結(jié)果:
postgresql94-9.4.10-1PGDG.rhel7.x86_64
postgresql94-server-9.4.10-1PGDG.rhel7.x86_64
postgresql94-libs-9.4.10-1PGDG.rhel7.x86_64
postgresql94-contrib-9.4.10-1PGDG.rhel7.x86_64
說明安裝成功
4. 初始化數(shù)據(jù)庫
先創(chuàng)建數(shù)據(jù)存放目錄:
mkdir -p /opt/pgsql/data
賦予postgres用戶該目錄的權(quán)限:
chown postgres /opt/pgsql/data
切換到postgres用戶:
su postgres
執(zhí)行初始化:
initdb -D /opt/pgsql/data
注:
-D 后面是數(shù)據(jù)庫文件存放的目錄,如果不指定則默認(rèn)在/var/lib/pgsql/9.4/data下
初始化的日志如下:
屬于此數(shù)據(jù)庫系統(tǒng)的文件宿主為用戶 "postgres".
此用戶也必須為服務(wù)器進(jìn)程的宿主.
數(shù)據(jù)庫簇將使用本地化語言 "zh_CN.UTF-8"進(jìn)行初始化.
默認(rèn)的數(shù)據(jù)庫編碼已經(jīng)相應(yīng)的設(shè)置為 "UTF8".
initdb: 無法為本地化語言環(huán)境"zh_CN.UTF-8"找到合適的文本搜索配置
缺省的文本搜索配置將會(huì)被設(shè)置到"simple"
禁止為數(shù)據(jù)頁生成校驗(yàn)和.
修復(fù)已存在目錄 /opt/pgsql/data 的權(quán)限 ... 成功
正在創(chuàng)建子目錄 ... 成功
選擇默認(rèn)最大聯(lián)接數(shù) (max_connections) ... 100
選擇默認(rèn)共享緩沖區(qū)大小 (shared_buffers) ... 128MB
選擇動(dòng)態(tài)共享內(nèi)存實(shí)現(xiàn) ......posix
創(chuàng)建配置文件 ... 成功
在 /opt/pgsql/data/base/1 中創(chuàng)建 template1 數(shù)據(jù)庫 ... 成功
初始化 pg_authid ... 成功
初始化dependencies ... 成功
創(chuàng)建系統(tǒng)視圖 ... 成功
正在加載系統(tǒng)對象描述 ...成功
創(chuàng)建(字符集)校對規(guī)則 ... 成功
創(chuàng)建字符集轉(zhuǎn)換 ... 成功
正在創(chuàng)建字典 ... 成功
對內(nèi)建對象設(shè)置權(quán)限 ... 成功
創(chuàng)建信息模式 ... 成功
正在裝載PL/pgSQL服務(wù)器端編程語言...成功
清理數(shù)據(jù)庫 template1 ... 成功
拷貝 template1 到 template0 ... 成功
拷貝 template1 到 template0 ... 成功
同步數(shù)據(jù)到磁盤...成功
成功. 您現(xiàn)在可以用下面的命令運(yùn)行數(shù)據(jù)庫服務(wù)器:
/usr/pgsql-9.4/bin/postmaster -D /opt/pgsql/data/
或者
/usr/pgsql-9.4/bin/pg_ctl -D /opt/pgsql/data/ -l logfile start
5. 啟動(dòng)服務(wù)
1.切換到postgres用戶
su postgres
這個(gè)步驟同樣必須以PostgreSQL用戶帳戶登錄來做。
2.啟動(dòng)服務(wù)
沒有-D選項(xiàng),服務(wù)器將使用環(huán)境變量PGDATA命名的目錄; 如果這個(gè)環(huán)境變量也沒有,將導(dǎo)致失敗。通常,最好在后臺(tái)啟動(dòng)postgres,使用下面的 Unix shell 語法:
pg_ctl -D /opt/pgsql/data/ -l logfile start
3.設(shè)置開機(jī)自動(dòng)啟動(dòng)
在Linux系統(tǒng)里,要么往/etc/rc.d/rc.local或 /etc/rc.local文件里加上下面幾行:
/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data
6. 創(chuàng)建用戶
PostgreSQL使用角色的概念管理數(shù)據(jù)庫訪問權(quán)限。 根據(jù)角色自身的設(shè)置不同,一個(gè)角色可以看做是一個(gè)數(shù)據(jù)庫用戶,或者一組數(shù)據(jù)庫用戶。 角色可以擁有數(shù)據(jù)庫對象(比如表)以及可以把這些對象上的權(quán)限賦予其它角色, 以控制誰擁有訪問哪些對象的權(quán)限。另外,我們也可以把一個(gè)角色的成員 權(quán)限賦予其它角色,這樣就允許成員角色使用分配給另一個(gè)角色的權(quán)限。
角色的概念替換了"用戶"和"組"。在PostgreSQL 版本 8.1 之前,用戶和組是獨(dú)立類型的記錄,但現(xiàn)在它們只是角色。 任何角色都可以是一個(gè)用戶、一個(gè)組、或者兩者。
數(shù)據(jù)庫角色從概念上與操作系統(tǒng)用戶是完全無關(guān)的。在實(shí)際使用中把它們對應(yīng)起來可能比較方便, 但這不是必須的。數(shù)據(jù)庫角色在整個(gè)數(shù)據(jù)庫集群中是全局的(而不是每個(gè)庫不同)。 要?jiǎng)?chuàng)建一個(gè)角色,使用 SQL 命令CREATE ROLE執(zhí)行:
CREATE ROLE name;
name遵循 SQL 標(biāo)識(shí)的規(guī)則:要么完全沒有特殊字符, 要么用雙引號(hào)包圍(實(shí)際上你通常會(huì)給命令增加額外的選項(xiàng),比如LOGIN。 下面顯示更多細(xì)節(jié))。要?jiǎng)h除一個(gè)現(xiàn)有角色,使用類似的DROP ROLE命令:
DROP ROLE name;
為了方便,程序createuser和dropuser 提供了對了這些 SQL 命令的封裝。我們可以在 shell 命令上直接調(diào)用它們:
直接在shell里輸入:
createuser lbd;
這樣就創(chuàng)建了lbd這個(gè)角色。
dropuser lbd;
這樣就創(chuàng)建了lbd這個(gè)角色。
要檢查現(xiàn)有角色的集合,可以檢查pg_roles系統(tǒng)表,比如:
SELECT rolname FROM pg_roles;
結(jié)果如下:
postgres=# SELECT rolname FROM pg_roles;
rolname
----------
postgres
lbd
(2 行記錄)
psql的元命令\du
也可以用于列出現(xiàn)有角色。
結(jié)果如下:
postgres=# \du
角色列表
角色名稱 | 屬性 | 成員屬于
---------+----------------------------------+----------
lbd | | {}
postgres| 超級(jí)用戶, 建立角色, 建立 DB, 復(fù)制 | {}
歡迎關(guān)注公眾號(hào): FullStackPlan 獲取更多干貨哦~